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 | de38a0b34fcd65fa3024300f978aa30eb86d854f (patch) | |
tree | 8df108e899638edec3dd3be208cc3be6fb10468f | |
parent | 9d7e75bdf568239af53d7162c2b207ea06ed4070 (diff) | |
download | samba-de38a0b34fcd65fa3024300f978aa30eb86d854f.tar.gz samba-de38a0b34fcd65fa3024300f978aa30eb86d854f.tar.xz samba-de38a0b34fcd65fa3024300f978aa30eb86d854f.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)
-rw-r--r-- | source/smbd/dir.c | 2 | ||||
-rw-r--r-- | source/smbd/reply.c | 8 | ||||
-rw-r--r-- | source/smbd/server.c | 1 | ||||
-rw-r--r-- | source/smbd/trans2.c | 6 |
4 files changed, 13 insertions, 4 deletions
diff --git a/source/smbd/dir.c b/source/smbd/dir.c index 5bd5b1d5736..06ee6ae8ed7 100644 --- a/source/smbd/dir.c +++ b/source/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/source/smbd/reply.c b/source/smbd/reply.c index 0216b58c34a..f630e71e258 100644 --- a/source/smbd/reply.c +++ b/source/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/source/smbd/server.c b/source/smbd/server.c index 3d5b75794b1..93d05ffab64 100644 --- a/source/smbd/server.c +++ b/source/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/source/smbd/trans2.c b/source/smbd/trans2.c index 11a2a50ffeb..e7fd6824abd 100644 --- a/source/smbd/trans2.c +++ b/source/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 */ { |