diff options
author | Luke Leighton <lkcl@samba.org> | 1997-11-09 17:30:10 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 1997-11-09 17:30:10 +0000 |
commit | f27966957fa7f16d337a4a58719239d036deab4c (patch) | |
tree | 52c91b6371d69432ad59e82fb5d1ec00d074ee3d /source/libsmb/smberr.c | |
parent | 1b0bd98bb3bfd3d8cd02e8983e825199e839ec05 (diff) | |
download | samba-f27966957fa7f16d337a4a58719239d036deab4c.tar.gz samba-f27966957fa7f16d337a4a58719239d036deab4c.tar.xz samba-f27966957fa7f16d337a4a58719239d036deab4c.zip |
attempting to mark up 32 bit error codes, needed for NT domains.
separated out smb server-mode password validation into a separate file.
added called and calling netbios names to client gen state: referenced
section in rfc1002.txt.
created workstation trust account checking code in ntclient.c
there might be a bug in reply_session_setup_andX. i indented and added { }
around single-line if statements: the lm password checking code now doesn't
look right (around the GUEST_SESSSETUP bits). *no code semantics have been
changed by the indentation process*.
Diffstat (limited to 'source/libsmb/smberr.c')
-rw-r--r-- | source/libsmb/smberr.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/source/libsmb/smberr.c b/source/libsmb/smberr.c index 5149568c045..35cd0bf88f0 100644 --- a/source/libsmb/smberr.c +++ b/source/libsmb/smberr.c @@ -151,9 +151,28 @@ return a SMB error string from a SMB buffer char *smb_errstr(char *inbuf) { static pstring ret; + int i,j; + BOOL nt_errors = (SVAL(inbuf,smb_flg2) & FLAGS2_32_BIT_ERROR_CODES) == FLAGS2_32_BIT_ERROR_CODES; + + if (nt_errors) + { + char *nt_errstr = NULL; + uint32 nt_err = IVAL(inbuf, smb_rcls); + uint16 nt_num = nt_err & 0x0000ffff; + uint16 class = (nt_err & 0xffff0000) >> 16; + + /* maybe lookup the error message in the nt error codes... */ + if ((nt_errstr = get_nt_error_msg(nt_num)) != NULL) + { + sprintf(ret,"NT Error: (%4x, %s)", class, nt_errstr); + return ret; + } + sprintf(ret,"NT Error: Unknown error (%4x %4x)", class, nt_num); + } + else + { int class = CVAL(inbuf,smb_rcls); int num = SVAL(inbuf,smb_err); - int i,j; for (i=0;err_classes[i].class;i++) if (err_classes[i].code == class) @@ -176,7 +195,8 @@ char *smb_errstr(char *inbuf) sprintf(ret,"%s - %d",err_classes[i].class,num); return ret; } - - sprintf(ret,"Error: Unknown error (%d,%d)",class,num); + sprintf(ret,"Error: Unknown error (%4x,%d)", class, num); + } + return(ret); } |