diff options
author | Jeremy Allison <jra@samba.org> | 2003-10-21 23:14:41 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-10-21 23:14:41 +0000 |
commit | 5114dee2716f9703f2eee07a891d77a15f4b6a82 (patch) | |
tree | 8c5a9df2bbff19a62f52960d8fce3a56c9166228 | |
parent | f589164ed94d79161d0798296c325b81c5eadbc7 (diff) | |
download | samba-5114dee2716f9703f2eee07a891d77a15f4b6a82.tar.gz samba-5114dee2716f9703f2eee07a891d77a15f4b6a82.tar.bz2 samba-5114dee2716f9703f2eee07a891d77a15f4b6a82.zip |
Fix for bug #64, Win9x Nexus tools not working against Samba3.0. Missing
map in errormap for ERROR_MORE_DATA -> ERRDOS, ERRmoredata.
Jeremy.
(This used to be commit 7eaae388b35cb3d20cdd968b00d65c88fcee5878)
-rw-r--r-- | source3/libsmb/errormap.c | 4 | ||||
-rw-r--r-- | source3/smbd/ipc.c | 10 |
2 files changed, 13 insertions, 1 deletions
diff --git a/source3/libsmb/errormap.c b/source3/libsmb/errormap.c index 4d9a717e1c..116d2cefe1 100644 --- a/source3/libsmb/errormap.c +++ b/source3/libsmb/errormap.c @@ -98,6 +98,10 @@ static const struct { */ {ERRDOS, ERRnoaccess, NT_STATUS_ACCESS_DENIED}, {ERRDOS, 111, NT_STATUS_BUFFER_TOO_SMALL}, +/* + * Not an official error, as only bit 0x80000000, not bits 0xC0000000 are set. + */ + {ERRDOS, ERRmoredata, STATUS_BUFFER_OVERFLOW}, {ERRDOS, ERRbadfid, NT_STATUS_OBJECT_TYPE_MISMATCH}, {ERRHRD, ERRgeneral, NT_STATUS_NONCONTINUABLE_EXCEPTION}, {ERRHRD, ERRgeneral, NT_STATUS_INVALID_DISPOSITION}, diff --git a/source3/smbd/ipc.c b/source3/smbd/ipc.c index bc828d2e8e..86d982b022 100644 --- a/source3/smbd/ipc.c +++ b/source3/smbd/ipc.c @@ -96,7 +96,7 @@ void send_trans_reply(char *outbuf, align = ((this_lparam)%4); if (buffer_too_large) { - ERROR_NT(STATUS_BUFFER_OVERFLOW); + ERROR_BOTH(STATUS_BUFFER_OVERFLOW,ERRDOS,ERRmoredata); } set_message(outbuf,10,1+align+this_ldata+this_lparam,True); @@ -281,6 +281,14 @@ static int api_fd_reply(connection_struct *conn,uint16 vuid,char *outbuf, subcommand = ((int)setup[0]) & 0xFFFF; if(!(p = get_rpc_pipe(pnum))) { + if (subcommand == TRANSACT_WAITNAMEDPIPEHANDLESTATE) { + /* Win9x does this call with a unicode pipe name, not a pnum. */ + /* Just return success for now... */ + DEBUG(3,("Got TRANSACT_WAITNAMEDPIPEHANDLESTATE on text pipe name\n")); + send_trans_reply(outbuf, NULL, 0, NULL, 0, False); + return -1; + } + DEBUG(1,("api_fd_reply: INVALID PIPE HANDLE: %x\n", pnum)); return api_no_reply(outbuf, mdrcnt); } |