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> --- mount.cifs.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mount.cifs.c b/mount.cifs.c index ae7a899..029f01a 100644 --- a/mount.cifs.c +++ b/mount.cifs.c @@ -1830,6 +1830,7 @@ assemble_mountinfo(struct parsed_mount_info *parsed_info, } assemble_exit: + free(orgoptions); return rc; } @@ -1994,8 +1995,11 @@ int main(int argc, char **argv) /* chdir into mountpoint as soon as possible */ rc = acquire_mountpoint(&mountpoint); - if (rc) + if (rc) { + free(mountpoint); + free(orgoptions); return rc; + } /* * mount.cifs does privilege separation. Most of the code to handle @@ -2014,6 +2018,7 @@ int main(int argc, char **argv) /* child */ rc = assemble_mountinfo(parsed_info, thisprogram, mountpoint, orig_dev, orgoptions); + free(mountpoint); return rc; } else { /* parent */ @@ -2149,5 +2154,6 @@ mount_exit: } free(options); free(orgoptions); + free(mountpoint); return rc; } -- 2.7.4