summaryrefslogtreecommitdiffstats
path: root/source3
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2014-04-21 13:58:49 -0700
committerJeremy Allison <jra@samba.org>2014-04-22 22:19:18 +0200
commit6549716cc104375789f034bec03cf2f74731e477 (patch)
tree73ea9f1748519eb8d178f857cc6a5725b3c0c449 /source3
parentc0651a32fcfd078d8835dccd97738295181edd36 (diff)
downloadsamba-6549716cc104375789f034bec03cf2f74731e477.tar.gz
samba-6549716cc104375789f034bec03cf2f74731e477.tar.xz
samba-6549716cc104375789f034bec03cf2f74731e477.zip
s3: srvsvc pipe - We should return WERR_BADFILE in _srvsvc_NetShareAdd if the path does not exist.
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
Diffstat (limited to 'source3')
-rw-r--r--source3/rpc_server/srvsvc/srv_srvsvc_nt.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
index 39d5e05bfe..e030b98ad0 100644
--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
@@ -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, '"', ' ');