]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libmount: fix mem leak in do_mount_by_types() [coverity scan]
authorKarel Zak <kzak@redhat.com>
Thu, 29 Jan 2015 09:58:55 +0000 (10:58 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 29 Jan 2015 09:58:55 +0000 (10:58 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
libmount/src/context.c
libmount/src/context_mount.c

index f623f34a77eef900e201f9e61de38d17e5cc94e0..dff7a47fd57fe4a9da817c581c363df1d14c0131 100644 (file)
@@ -1647,8 +1647,9 @@ int mnt_context_prepare_target(struct libmnt_context *cxt)
        return 0;
 }
 
-/* Guess type, but not set to cxt->fs, use free() for the result. It's no error
- * when we're not able to guess a filesystem type.
+/* Guess type, but not set to cxt->fs, always use free() for the result. It's
+ * no error when we're not able to guess a filesystem type. Note that error
+ * does not mean that result in @type is NULL.
  */
 int mnt_context_guess_srcpath_fstype(struct libmnt_context *cxt, char **type)
 {
@@ -1717,8 +1718,8 @@ int mnt_context_guess_fstype(struct libmnt_context *cxt)
        rc = mnt_context_guess_srcpath_fstype(cxt, &type);
        if (rc == 0 && type)
                __mnt_fs_set_fstype_ptr(cxt->fs, type);
-       else
-               free(type);
+
+       free(type);
 done:
        DBG(CXT, ul_debugobj(cxt, "FS type: %s [rc=%d]",
                                mnt_fs_get_fstype(cxt->fs), rc));
index 71a4e85f9bd58b35d42b7541d2cb56e838c2c22a..455ef2ef0d948ab2e8ab61dd1d2ef8a11d88b77d 100644 (file)
@@ -787,8 +787,9 @@ static int do_mount_by_types(struct libmnt_context *cxt, const char *types)
                if (strcmp(p, "auto") == 0) {
                        rc = mnt_context_guess_srcpath_fstype(cxt, &autotype);
                        if (rc) {
-                               DBG(CXT, ul_debugobj(cxt, "failed to guess FS type"));
+                               DBG(CXT, ul_debugobj(cxt, "failed to guess FS type [rc=%d]", rc));
                                free(p0);
+                               free(autotype);
                                return rc;
                        }
                        p = autotype;