Date: Mon, 6 Jul 2009 18:16:43 +0200 (CEST) From: Ulrich Spoerlein <uqs@spoerlein.net> To: FreeBSD-gnats-submit@FreeBSD.org Subject: bin/136383: [PATCH] usr.bin/jot fix usage of uninitialized values Message-ID: <200907061616.n66GGhZF005383@roadrunner.spoerlein.net> Resent-Message-ID: <200907061620.n66GK1FH052354@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 136383 >Category: bin >Synopsis: [PATCH] usr.bin/jot fix usage of uninitialized values >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Jul 06 16:20:01 UTC 2009 >Closed-Date: >Last-Modified: >Originator: Ulrich Spörlein >Release: FreeBSD 7.2-STABLE i386 >Organization: >Environment: >Description: A run of clang's static analyzer found that jot(1) has a bug regarding the use of uninitialized variables. https://www.spoerlein.net/scan-build/2009-07-04-1/report-BcTTXG.html#EndPath The repetitions, start, end and step values are not preset. When defaults are given, it will use "random" values for these. >How-To-Repeat: % jot - 0 0 % jot - - 0 0 0 % jot - - - 0 0 0 0 % jot - - - - 0 0 0 0 0 >Fix: Simply pre-set all four variables to their defaults to match behaviour claimed in manpage. Also add regression test for this case. --- jot.diff begins here --- Index: tools/regression/usr.bin/jot/regress.sh =================================================================== --- tools/regression/usr.bin/jot/regress.sh (revision 193930) +++ tools/regression/usr.bin/jot/regress.sh (working copy) @@ -1,6 +1,6 @@ # $FreeBSD$ -echo 1..56 +echo 1..57 REGRESSION_START($1) @@ -20,6 +20,7 @@ REGRESSION_TEST(`ddhh', `jot - - 120 2') REGRESSION_TEST(`ddhd', `jot - - 120 -') REGRESSION_TEST(`dddh', `jot - - - 2') +REGRESSION_TEST(`dddd', `jot - - - -') REGRESSION_TEST(`hhhh2', `jot 30 20 160 2') REGRESSION_TEST(`hhhd2', `jot 30 20 160 -') REGRESSION_TEST(`hhdh2', `jot 30 20 - 2') Index: tools/regression/usr.bin/jot/regress.dddd.out =================================================================== --- tools/regression/usr.bin/jot/regress.dddd.out (revision 0) +++ tools/regression/usr.bin/jot/regress.dddd.out (revision 0) @@ -0,0 +1,100 @@ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 Index: usr.bin/jot/jot.c =================================================================== --- usr.bin/jot/jot.c (revision 193930) +++ usr.bin/jot/jot.c (working copy) @@ -101,13 +101,13 @@ int ch; int mask = 0; int n = 0; - double begin; + double begin = BEGIN_DEF; double divisor; - double ender; - double s; + double ender = ENDER_DEF; + double s = STEP_DEF; double x, y; long i; - long reps; + long reps = REPS_DEF; while ((ch = getopt(argc, argv, "b:cnp:rs:w:")) != -1) switch (ch) { --- jot.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907061616.n66GGhZF005383>