diff options
author | Jeremy Allison <jra@samba.org> | 2003-10-02 17:26:42 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-10-02 17:26:42 +0000 |
commit | b1ca1d9134a159c4d5d15eee3012cdc49f71bdb2 (patch) | |
tree | 9cf1125825e85308e583d9537b6c0e1aee297495 | |
parent | ec6c16d7b1ede5e3b985bd6e249e694109ee8155 (diff) | |
download | samba-b1ca1d9134a159c4d5d15eee3012cdc49f71bdb2.tar.gz samba-b1ca1d9134a159c4d5d15eee3012cdc49f71bdb2.tar.bz2 samba-b1ca1d9134a159c4d5d15eee3012cdc49f71bdb2.zip |
Correct fix for excel read-only bug. Add panic for logic error in developer mode.
Jeremy.
(This used to be commit f00af98f379463829b1ef62d78dda0365c1d7997)
-rw-r--r-- | source3/smbd/error.c | 10 | ||||
-rw-r--r-- | source3/smbd/trans2.c | 3 |
2 files changed, 7 insertions, 6 deletions
diff --git a/source3/smbd/error.c b/source3/smbd/error.c index 7eec5e25df..795bf0949c 100644 --- a/source3/smbd/error.c +++ b/source3/smbd/error.c @@ -61,6 +61,9 @@ int unix_error_packet(char *outbuf,int def_class,uint32 def_code, eclass = unix_ERR_class; ecode = unix_ERR_code; ntstatus = unix_ERR_ntstatus; + unix_ERR_class = SMB_SUCCESS; + unix_ERR_code = 0; + unix_ERR_ntstatus = NT_STATUS_OK; } else { while (unix_dos_nt_errmap[i].dos_class != 0) { if (unix_dos_nt_errmap[i].unix_error == errno) { @@ -90,9 +93,10 @@ int error_packet(char *outbuf,NTSTATUS ntstatus, if (errno != 0) DEBUG(3,("error string = %s\n",strerror(errno))); - unix_ERR_class = SMB_SUCCESS; - unix_ERR_code = 0; - unix_ERR_ntstatus = NT_STATUS_OK; +#if defined(DEVELOPER) + if (unix_ERR_class != SMB_SUCCESS || unix_ERR_code != 0 || !NT_STATUS_IS_OK(unix_ERR_ntstatus)) + smb_panic("logic error in error processing"); +#endif /* * We can explicitly force 32 bit error codes even when the diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 033e76a33e..ee63220d18 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -1785,12 +1785,9 @@ int set_bad_path_error(int err, BOOL bad_path, char *outbuf, int def_class, uint err, (int)bad_path )); if(err == ENOENT) { - unix_ERR_class = ERRDOS; if (bad_path) { - unix_ERR_code = ERRbadpath; return ERROR_NT(NT_STATUS_OBJECT_PATH_NOT_FOUND); } else { - unix_ERR_code = ERRbadfile; return ERROR_NT(NT_STATUS_OBJECT_NAME_NOT_FOUND); } } |