]> granicus.if.org Git - zfs/commitdiff
Fix memory leak in zpool_clear_label()
authorRichard Yao <ryao@gentoo.org>
Wed, 23 Apr 2014 03:35:38 +0000 (23:35 -0400)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Sat, 31 May 2014 00:00:37 +0000 (17:00 -0700)
Clang's static analyzer reported a memory leak in zpool_clear_label().
Upon review, it turns out to be right. This should be a very short lived
leak because no daemons use this functionality, but that does not
preclude the possibility of third party daemons that do use it. Lets fix
it to be a good Samaritan.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Ned Bass <bass6@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #2330

lib/libzfs/libzfs_import.c

index b5a079c0eb143552d9d96728326e64986f590775..8afe77af398b7ce5f49300a61e40f2e26f2ff37d 100644 (file)
@@ -922,8 +922,10 @@ zpool_clear_label(int fd)
 
        for (l = 0; l < VDEV_LABELS; l++) {
                if (pwrite64(fd, label, sizeof (vdev_label_t),
-                   label_offset(size, l)) != sizeof (vdev_label_t))
+                   label_offset(size, l)) != sizeof (vdev_label_t)) {
+                       free(label);
                        return (-1);
+               }
        }
 
        free(label);