[PATCH cifs-utils v2] mount.cifs.c: fix memory leaks in main func

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Jiawen Liu <liujiawen10@xxxxxxxxxx>

In mount.cifs module, orgoptions and mountpoint in the main func
point to the memory allocated by func realpath and strndup respectively.
However, they are not freed before the main func returns so that the
memory leaks occurred.

The memory leak problem is reported by LeakSanitizer tool.
LeakSanitizer url: "https://github.com/google/sanitizers";

Here I free the pointers orgoptions and mountpoint before main
func returns.

Fixes£º7549ad5e7126 ("memory leaks: caused by func realpath and strndup")
Signed-off-by: Jiawen Liu <liujiawen10@xxxxxxxxxx>
Reported-by: Jin Du <dujin1@xxxxxxxxxx>
Reviewed-by: Saisai Zhang <zhangsaisai@xxxxxxxxxx>
Reviewed-by: Aur¨¦lien Aptel <aaptel@xxxxxxxx>
---
v1->v2:
- free orgoptions in main func as suggested by Aur¨¦lien Aptel
- free mountpoint in acquire_mountpoint func as suggested by Aur¨¦lien Aptel

 mount.cifs.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/mount.cifs.c b/mount.cifs.c
index ae7a899..656d353 100644
--- a/mount.cifs.c
+++ b/mount.cifs.c
@@ -1891,7 +1891,10 @@ restore_privs:
 		uid_t __attribute__((unused)) uignore = setfsuid(oldfsuid);
 		gid_t __attribute__((unused)) gignore = setfsgid(oldfsgid);
 	}
-
+	
+	if (rc) {
+		free(*mountpointp);
+	}
 	return rc;
 }

@@ -1994,8 +1997,10 @@ int main(int argc, char **argv)

 	/* chdir into mountpoint as soon as possible */
 	rc = acquire_mountpoint(&mountpoint);
-	if (rc)
+	if (rc) {
+		free(orgoptions);
 		return rc;
+	}

 	/*
 	 * mount.cifs does privilege separation. Most of the code to handle
@@ -2014,6 +2019,8 @@ int main(int argc, char **argv)
 		/* child */
 		rc = assemble_mountinfo(parsed_info, thisprogram, mountpoint,
 					orig_dev, orgoptions);
+		free(orgoptions);
+		free(mountpoint);
 		return rc;
 	} else {
 		/* parent */
@@ -2149,5 +2156,6 @@ mount_exit:
 	}
 	free(options);
 	free(orgoptions);
+	free(mountpoint);
 	return rc;
 }
-- 
2.7.4




[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux