diff options
author | Samba Release Account <samba-bugs@samba.org> | 1997-08-20 01:22:05 +0000 |
---|---|---|
committer | Samba Release Account <samba-bugs@samba.org> | 1997-08-20 01:22:05 +0000 |
commit | c76dc7c2963d1205cf46849df6b6f0edbf63692d (patch) | |
tree | 4d778d8bcded6c1096902cfa41cd74291307da2a | |
parent | 5c3357953c038e0cfb20567c704ec0579ca192b7 (diff) | |
download | samba-c76dc7c2963d1205cf46849df6b6f0edbf63692d.tar.gz samba-c76dc7c2963d1205cf46849df6b6f0edbf63692d.tar.bz2 samba-c76dc7c2963d1205cf46849df6b6f0edbf63692d.zip |
Fix suggested by "Christian Groessler" <chris@fast-ag.de>
dir.c: Cause dptr_create to return -2 when failing on unix error.
reply.c: Use UNIXERROR in more cases.
server.c: Add ENOTDIR mapping to error table.
trans2.c: Correctly determine UNIX error on dptr_create.
Jeremy (jallison@whistle.com)
(This used to be commit de38a0b34fcd65fa3024300f978aa30eb86d854f)
-rw-r--r-- | source3/smbd/dir.c | 2 | ||||
-rw-r--r-- | source3/smbd/reply.c | 8 | ||||
-rw-r--r-- | source3/smbd/server.c | 1 | ||||
-rw-r--r-- | source3/smbd/trans2.c | 6 |
4 files changed, 13 insertions, 4 deletions
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 5bd5b1d573..06ee6ae8ed 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -282,7 +282,7 @@ int dptr_create(int cnum,char *path, BOOL expect_close,int pid) int oldi; if (!start_dir(cnum,path)) - return(-1); + return(-2); /* Code to say use a unix error return code. */ if (dptrs_open >= MAXDIR) dptr_idleoldest(); diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 0216b58c34..f630e71e25 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -546,7 +546,7 @@ int reply_chkpth(char *inbuf,char *outbuf) ok = directory_exist(name,NULL); if (!ok) - return(ERROR(ERRDOS,ERRbadpath)); + return(UNIXERROR(ERRDOS,ERRbadpath)); outsize = set_message(outbuf,0,0,True); @@ -825,7 +825,11 @@ int reply_search(char *inbuf,char *outbuf) { dptr_num = dptr_create(cnum,directory,expect_close,SVAL(inbuf,smb_pid)); if (dptr_num < 0) - return(ERROR(ERRDOS,ERRnofids)); + { + if(dptr_num == -2) + return (UNIXERROR(ERRDOS,ERRnofids)); + return(ERROR(ERRDOS,ERRnofids)); + } } DEBUG(4,("dptr_num is %d\n",dptr_num)); diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 3d5b75794b..93d05ffab6 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -1940,6 +1940,7 @@ struct {EPERM,ERRDOS,ERRnoaccess}, {EACCES,ERRDOS,ERRnoaccess}, {ENOENT,ERRDOS,ERRbadfile}, + {ENOTDIR,ERRDOS,ERRbadpath}, {EIO,ERRHRD,ERRgeneral}, {EBADF,ERRSRV,ERRsrverror}, {EINVAL,ERRSRV,ERRsrverror}, diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 11a2a50ffe..e7fd6824ab 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -614,7 +614,11 @@ static int call_trans2findfirst(char *inbuf, char *outbuf, int bufsize, int cnum dptr_num = dptr_create(cnum,directory, True ,SVAL(inbuf,smb_pid)); if (dptr_num < 0) - return(ERROR(ERRDOS,ERRbadpath)); + { + if(dptr_num == -2) + return (UNIXERROR(ERRDOS,ERRbadpath)); + return(ERROR(ERRDOS,ERRbadpath)); + } /* convert the formatted masks */ { |