Author: jra Date: 2006-07-02 20:40:53 +0000 (Sun, 02 Jul 2006) New Revision: 16760
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16760 Log: Fix checking of the order of NT errors for bad fsp/conn pairs. We now pass Samba4 RAW-SAMBA3CHECKFSP. Jeremy. Modified: trunk/source/include/smb_macros.h Changeset: Modified: trunk/source/include/smb_macros.h =================================================================== --- trunk/source/include/smb_macros.h 2006-07-02 17:40:35 UTC (rev 16759) +++ trunk/source/include/smb_macros.h 2006-07-02 20:40:53 UTC (rev 16760) @@ -91,7 +91,7 @@ #define FSP_BELONGS_CONN(fsp,conn) do {\ extern struct current_user current_user;\ if (!((fsp) && (conn) && ((conn)==(fsp)->conn) && (current_user.vuid==(fsp)->vuid))) \ - return(ERROR_DOS(ERRDOS,ERRbadfid));\ + return ERROR_NT(NT_STATUS_INVALID_HANDLE); \ } while(0) #define FNUM_OK(fsp,c) ((fsp) && !(fsp)->is_directory && (c)==(fsp)->conn && current_user.vuid==(fsp)->vuid) @@ -101,11 +101,13 @@ */ #define CHECK_FSP(fsp,conn) do {\ extern struct current_user current_user;\ - if ((fsp) && (fsp)->is_directory) \ + if (!(fsp) || !(conn)) \ + return ERROR_NT(NT_STATUS_INVALID_HANDLE); \ + else if (((conn) != (fsp)->conn) || current_user.vuid != (fsp)->vuid) \ + return ERROR_NT(NT_STATUS_INVALID_HANDLE); \ + else if ((fsp)->is_directory) \ return ERROR_NT(NT_STATUS_INVALID_DEVICE_REQUEST); \ - else if (!FNUM_OK(fsp,conn)) \ - return ERROR_NT(NT_STATUS_INVALID_HANDLE); \ - else if((fsp)->fh->fd == -1) \ + else if ((fsp)->fh->fd == -1) \ return ERROR_NT(NT_STATUS_ACCESS_DENIED); \ (fsp)->num_smb_operations++;\ } while(0)
