]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
df: fix use of uninitialized variable reported by valgrind
authorPádraig Brady <P@draigBrady.com>
Thu, 2 Apr 2015 04:34:07 +0000 (05:34 +0100)
committerPádraig Brady <P@draigBrady.com>
Fri, 3 Apr 2015 13:27:27 +0000 (14:27 +0100)
 Conditional jump or move depends on uninitialised value(s)
    at 0x40380C: get_field_values (df.c:840)
    by 0x403E16: get_dev (df.c:994)
    by 0x404D65: get_all_entries (df.c:1364)
    by 0x405926: main (df.c:1714)

* src/df.c (get_dev): Initialize the fsu.fsu_bavail_top_bit_set
member, when adding placeholder entries.
(main): Avoid a "definitely lost" memory leak warning from valgrind,
reported by Bernhard Voelker.

src/df.c

index 76a3e373babd99dc5e3a19effd48f3c6767af345..38566811c65e193ed42cddc2c5948b00e95aa120 100644 (file)
--- a/src/df.c
+++ b/src/df.c
@@ -925,6 +925,7 @@ get_dev (char const *disk, char const *mount_point, char const* file,
             return;
 
           fstype = "-";
+          fsu.fsu_bavail_top_bit_set = false;
           fsu.fsu_blocksize = fsu.fsu_blocks = fsu.fsu_bfree =
           fsu.fsu_bavail = fsu.fsu_files = fsu.fsu_ffree = UINTMAX_MAX;
         }
@@ -949,6 +950,7 @@ get_dev (char const *disk, char const *mount_point, char const* file,
               && (! dev_me->me_remote || ! me_remote))
             {
               fstype = "-";
+              fsu.fsu_bavail_top_bit_set = false;
               fsu.fsu_blocksize = fsu.fsu_blocks = fsu.fsu_bfree =
               fsu.fsu_bavail = fsu.fsu_files = fsu.fsu_ffree = UINTMAX_MAX;
             }
@@ -1709,6 +1711,8 @@ main (int argc, char **argv)
       for (i = optind; i < argc; ++i)
         if (argv[i])
           get_entry (argv[i], &stats[i - optind]);
+
+      IF_LINT (free (stats));
     }
   else
     get_all_entries ();