s3: srvsvc pipe - We should return WERR_BADFILE in _srvsvc_NetShareAdd if the path...
authorJeremy Allison <jra@samba.org>
Mon, 21 Apr 2014 20:58:49 +0000 (13:58 -0700)
committerJeremy Allison <jra@samba.org>
Tue, 22 Apr 2014 20:19:18 +0000 (22:19 +0200)
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Richard Sharpe <realrichardsharpe@gmail.com>
Reviewed-by: David Disseldorp <ddiss@suse.de>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Tue Apr 22 22:19:18 CEST 2014 on sn-devel-104

source3/rpc_server/srvsvc/srv_srvsvc_nt.c

index 39d5e05bfec937a3f7caaea9634cda530fe22391..e030b98ad0ba319f80f151ff18fdafe341ed8514 100644 (file)
@@ -1946,6 +1946,7 @@ WERROR _srvsvc_NetShareAdd(struct pipes_struct *p,
        struct security_descriptor *psd = NULL;
        bool is_disk_op;
        int max_connections = 0;
+       SMB_STRUCT_STAT st;
        TALLOC_CTX *ctx = p->mem_ctx;
 
        DEBUG(5,("_srvsvc_NetShareAdd: %d\n", __LINE__));
@@ -2045,6 +2046,16 @@ WERROR _srvsvc_NetShareAdd(struct pipes_struct *p,
                return WERR_OBJECT_PATH_INVALID;
        }
 
+       ret = sys_lstat(path, &st, false);
+       if (ret == -1 && (errno != EACCES)) {
+               /*
+                * If path has any other than permission
+                * problem, return WERR_BADFILE (as Windows
+                * does.
+                */
+               return WERR_BADFILE;
+       }
+
        /* Ensure share name, pathname and comment don't contain '"' characters. */
        string_replace(share_name_in, '"', ' ');
        string_replace(share_name, '"', ' ');