libsmb: fix leak in opendir error path
authorDavid Disseldorp <ddiss@samba.org>
Tue, 25 Oct 2016 16:25:02 +0000 (18:25 +0200)
committerJeremy Allison <jra@samba.org>
Tue, 25 Oct 2016 22:58:41 +0000 (00:58 +0200)
Fixes CID 242325 - dir state and the talloc frame are leaked on
user_auth_info_init() failure.

Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Wed Oct 26 00:58:41 CEST 2016 on sn-devel-144

source3/libsmb/libsmb_dir.c

index dd37a247d27f7f61303e7364d79fa09cbbc0135b..8bf3c6b8efc25d688c8de54c67ad348bd83010e2 100644 (file)
@@ -485,6 +485,12 @@ SMBC_opendir_ctx(SMBCCTX *context,
 
                u_info = user_auth_info_init(frame);
                if (u_info == NULL) {
+                       if (dir) {
+                               SAFE_FREE(dir->fname);
+                               SAFE_FREE(dir);
+                       }
+                       TALLOC_FREE(frame);
+                       errno = ENOMEM;
                        return NULL;
                }
                set_cmdline_auth_info_username(u_info, user);