On 2019/8/8 5:44, Pavel Shilovsky wrote: > Merged into "next" with one minor change - removed a trailing white > space. Thanks. > That is ok. Thank you very much. > -- > Best regards, > Pavel Shilovsky > > вт, 6 авг. 2019 г. в 09:49, Pavel Shilovsky <piastryyy@xxxxxxxxx>: > >> >> пн, 5 авг. 2019 г. в 19:36, Zhiqiang Liu <liuzhiqiang26@xxxxxxxxxx>: >>> >>> 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 >>> >> >> Thanks for the patch! I will apply it to my github tree shortly. >> >> -- >> Best regards, >> Pavel Shilovsky > > . >