diff options
Diffstat (limited to 'source/smbd/reply.c')
-rw-r--r-- | source/smbd/reply.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/source/smbd/reply.c b/source/smbd/reply.c index 5b25647196b..2ceff9d9d7c 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -312,13 +312,22 @@ int reply_tcon_and_X(connection_struct *conn, char *inbuf,char *outbuf,int lengt *password = 0; passlen = strlen(password); } - - p = strchr(path+2,'\\'); - if (!p) { - END_PROFILE(SMBtconX); - return(ERROR(ERRDOS,ERRnosuchshare)); + + /* + * the service name can be either: \\server\share + * or share directly like on the DELL PowerVault 705 + */ + if (*path=='\\') { + p = strchr(path+2,'\\'); + if (!p) { + END_PROFILE(SMBtconX); + return(ERROR(ERRDOS,ERRnosuchshare)); + } + fstrcpy(service,p+1); } - fstrcpy(service,p+1); + else + fstrcpy(service,path); + p = strchr(service,'%'); if (p) { *p++ = 0; |