DOS error codes were being lost with the conversion to async
libsmbclient. If we're passing around NTSTATUS internally,
let's just convert it when we get it.
DOS ACCESS_DENIED on nautilus was not prompting for other credentials,
because it was not being mapped.
return NT_STATUS(IVAL(buf, smb_rcls));
}
- /* if the client uses dos errors, but there is no error,
- we should return no error here, otherwise it looks
- like an unknown bad NT_STATUS. jmcd */
- if (CVAL(buf, smb_rcls) == 0)
- return NT_STATUS_OK;
-
- return NT_STATUS_DOS(CVAL(buf, smb_rcls), SVAL(buf,smb_err));
+ return dos_to_ntstatus(CVAL(buf, smb_rcls), SVAL(buf,smb_err));
}
/**
NTSTATUS dos_to_ntstatus(uint8 eclass, uint32 ecode)
{
int i;
- if (eclass == 0 && ecode == 0) return NT_STATUS_OK;
+ if (eclass == 0) return NT_STATUS_OK;
for (i=0; NT_STATUS_V(dos_to_ntstatus_map[i].ntstatus); i++) {
if (eclass == dos_to_ntstatus_map[i].dos_class &&
ecode == dos_to_ntstatus_map[i].dos_code) {