CVE-2017-2619: s3: smbd: Opendir_internal() early return if SMB_VFS_OPENDIR failed.
authorJeremy Allison <jra@samba.org>
Tue, 20 Dec 2016 00:25:26 +0000 (16:25 -0800)
committerKarolin Seeger <kseeger@samba.org>
Thu, 23 Mar 2017 18:10:19 +0000 (19:10 +0100)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12496

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Uri Simchoni <uri@samba.org>
source3/smbd/dir.c

index b22d92d7ba9d0a101442629eee2c9b741201bfa9..a5d172a86e129cc4ea3dfd206c4d269d751ea6f0 100644 (file)
@@ -1643,6 +1643,15 @@ static struct smb_Dir *OpenDir_internal(TALLOC_CTX *mem_ctx,
                return NULL;
        }
 
+       dirp->dir = SMB_VFS_OPENDIR(conn, smb_dname, mask, attr);
+
+       if (!dirp->dir) {
+               DEBUG(5,("OpenDir: Can't open %s. %s\n",
+                       smb_dname->base_name,
+                       strerror(errno) ));
+               goto fail;
+       }
+
        dirp->conn = conn;
        dirp->name_cache_size = lp_directory_name_cache_size(SNUM(conn));
 
@@ -1657,15 +1666,6 @@ static struct smb_Dir *OpenDir_internal(TALLOC_CTX *mem_ctx,
        }
        talloc_set_destructor(dirp, smb_Dir_destructor);
 
-       dirp->dir = SMB_VFS_OPENDIR(conn, dirp->dir_smb_fname, mask, attr);
-
-       if (!dirp->dir) {
-               DEBUG(5,("OpenDir: Can't open %s. %s\n",
-                       dirp->dir_smb_fname->base_name,
-                       strerror(errno) ));
-               goto fail;
-       }
-
        return dirp;
 
   fail: