diff options
author | Jeremy Allison <jra@samba.org> | 1997-12-20 05:25:37 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1997-12-20 05:25:37 +0000 |
commit | 42e0d9a1f0b635076ecfc5823217662dc4a39d22 (patch) | |
tree | 954038ed4cc19eab04a382691509d1dd0a1ed283 /source3 | |
parent | b88f43dfdbabbc265ab5a394332df23826860154 (diff) | |
download | samba-42e0d9a1f0b635076ecfc5823217662dc4a39d22.tar.gz samba-42e0d9a1f0b635076ecfc5823217662dc4a39d22.tar.bz2 samba-42e0d9a1f0b635076ecfc5823217662dc4a39d22.zip |
trans2.c: Forced trans2_findfirst to behave as NT does in error returns.
util.c: Applied fix from Branko Cibej <branko.cibej@hermes.si> where
StrnCaseCmp tests one character too many.
Jeremy.
(This used to be commit cb771b2667070cff8d6cf86998a11ba2e4977690)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/util.c | 3 | ||||
-rw-r--r-- | source3/smbd/trans2.c | 32 |
2 files changed, 11 insertions, 24 deletions
diff --git a/source3/lib/util.c b/source3/lib/util.c index 18f1240bbd..58560bd227 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -953,10 +953,11 @@ int StrnCaseCmp(char *s, char *t, int n) else #endif /* KANJI_WIN95_COMPATIBILITY */ { - while (n-- && *s && *t && toupper(*s) == toupper(*t)) + while (n && *s && *t && toupper(*s) == toupper(*t)) { s++; t++; + n--; } /* not run out of chars - strings are different lengths */ diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 0ca678b768..ce4a450050 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -646,29 +646,7 @@ 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) - { - if(dptr_num == -2) - { - if((errno == ENOENT) && bad_path) - { - unix_ERR_class = ERRDOS; - unix_ERR_code = ERRbadpath; - } - -#if 0 - /* Ugly - NT specific hack - maybe not needed ? (JRA) */ - if((errno == ENOTDIR) && (Protocol >= PROTOCOL_NT1) && - (get_remote_arch() == RA_WINNT)) - { - unix_ERR_class = ERRDOS; - unix_ERR_code = ERRbaddirectory; - } -#endif - - return (UNIXERROR(ERRDOS,ERRbadpath)); - } - return(ERROR(ERRDOS,ERRbadpath)); - } + return(ERROR(ERRDOS,ERRbadfile)); /* convert the formatted masks */ { @@ -748,6 +726,14 @@ static int call_trans2findfirst(char *inbuf, char *outbuf, int bufsize, int cnum dptr_num = -1; } + /* + * If there are no matching entries we must return ERRDOS/ERRbadfile - + * from observation of NT. + */ + + if(numentries == 0) + return(ERROR(ERRDOS,ERRbadfile)); + /* At this point pdata points to numentries directory entries. */ /* Set up the return parameter block */ |