svn commit: samba r24102 - in branches/SAMBA_3_2/source/smbd: .

vlendec at samba.org vlendec at samba.org
Tue Jul 31 12:05:43 GMT 2007


Author: vlendec
Date: 2007-07-31 12:05:40 +0000 (Tue, 31 Jul 2007)
New Revision: 24102

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24102

Log:
Pass the fid instead of inbuf and an offset to file_fsp.

This removes the buf==NULL condition in file_fsp(), but wherever it is called
we do have a buffer anyway.

Volker

Modified:
   branches/SAMBA_3_2/source/smbd/files.c
   branches/SAMBA_3_2/source/smbd/nttrans.c
   branches/SAMBA_3_2/source/smbd/reply.c
   branches/SAMBA_3_2/source/smbd/trans2.c


Changeset:
Modified: branches/SAMBA_3_2/source/smbd/files.c
===================================================================
--- branches/SAMBA_3_2/source/smbd/files.c	2007-07-31 11:26:24 UTC (rev 24101)
+++ branches/SAMBA_3_2/source/smbd/files.c	2007-07-31 12:05:40 UTC (rev 24102)
@@ -487,7 +487,7 @@
  Get an fsp from a packet given the offset of a 16 bit fnum.
 ****************************************************************************/
 
-files_struct *file_fsp(const char *buf, int where)
+files_struct *file_fsp(uint16 fid)
 {
 	files_struct *fsp;
 
@@ -495,11 +495,7 @@
 		return chain_fsp;
 	}
 
-	if (!buf) {
-		return NULL;
-	}
-
-	fsp = file_fnum(SVAL(buf, where));
+	fsp = file_fnum(fid);
 	if (fsp) {
 		chain_fsp = fsp;
 	}

Modified: branches/SAMBA_3_2/source/smbd/nttrans.c
===================================================================
--- branches/SAMBA_3_2/source/smbd/nttrans.c	2007-07-31 11:26:24 UTC (rev 24101)
+++ branches/SAMBA_3_2/source/smbd/nttrans.c	2007-07-31 12:05:40 UTC (rev 24102)
@@ -619,7 +619,7 @@
 		 */
 		pstring rel_fname;
 		files_struct *dir_fsp = file_fsp(
-			(char *)req->inbuf, smb_ntcreate_RootDirectoryFid);
+			SVAL(req->inbuf, smb_ntcreate_RootDirectoryFid));
 		size_t dir_name_len;
 
 		if(!dir_fsp) {
@@ -1377,7 +1377,7 @@
 		/*
 		 * This filename is relative to a directory fid.
 		 */
-		files_struct *dir_fsp = file_fsp(params,4);
+		files_struct *dir_fsp = file_fsp(SVAL(params,4));
 		size_t dir_name_len;
 
 		if(!dir_fsp) {
@@ -2078,7 +2078,7 @@
 		return ERROR_DOS(ERRDOS,ERRbadfunc);
 	}
 
-	fsp = file_fsp((char *)setup,4);
+	fsp = file_fsp(SVAL(setup,4));
 	filter = IVAL(setup, 0);
 	recursive = (SVAL(setup, 6) != 0) ? True : False;
 
@@ -2173,7 +2173,7 @@
 		return ERROR_DOS(ERRDOS,ERRbadfunc);
 	}
 
-	fsp = file_fsp(params, 0);
+	fsp = file_fsp(SVAL(params, 0));
 	replace_if_exists = (SVAL(params,2) & RENAME_REPLACE_IF_EXISTS) ? True : False;
 	CHECK_FSP(fsp, conn);
 	srvstr_get_path_wcard(inbuf, SVAL(inbuf,smb_flg2), new_name, params+4,
@@ -2244,7 +2244,7 @@
 		return ERROR_DOS(ERRDOS,ERRbadfunc);
 	}
 
-	fsp = file_fsp(params,0);
+	fsp = file_fsp(SVAL(params,0));
 	if(!fsp) {
 		return ERROR_DOS(ERRDOS,ERRbadfid);
 	}
@@ -2358,7 +2358,7 @@
 		return ERROR_DOS(ERRDOS,ERRbadfunc);
 	}
 
-	if((fsp = file_fsp(params,0)) == NULL) {
+	if((fsp = file_fsp(SVAL(params,0))) == NULL) {
 		return ERROR_DOS(ERRDOS,ERRbadfid);
 	}
 
@@ -2415,7 +2415,7 @@
 	DEBUG(10,("call_nt_transact_ioctl: function[0x%08X] FID[0x%04X] isFSctl[0x%02X] compfilter[0x%02X]\n", 
 		 function, fidnum, isFSctl, compfilter));
 
-	fsp=file_fsp((char *)*ppsetup, 4);
+	fsp=file_fsp(SVAL(ppsetup, 4));
 	/* this check is done in each implemented function case for now
 	   because I don't want to break anything... --metze
 	FSP_BELONGS_CONN(fsp,conn);*/
@@ -2693,7 +2693,7 @@
 	}
 	
 	/* maybe we can check the quota_fnum */
-	fsp = file_fsp(params,0);
+	fsp = file_fsp(SVAL(params,0));
 	if (!CHECK_NTQUOTA_HANDLE_OK(fsp,conn)) {
 		DEBUG(3,("TRANSACT_GET_USER_QUOTA: no valid QUOTA HANDLE\n"));
 		return ERROR_NT(NT_STATUS_INVALID_HANDLE);
@@ -2941,7 +2941,7 @@
 	}
 	
 	/* maybe we can check the quota_fnum */
-	fsp = file_fsp(params,0);
+	fsp = file_fsp(SVAL(params,0));
 	if (!CHECK_NTQUOTA_HANDLE_OK(fsp,conn)) {
 		DEBUG(3,("TRANSACT_GET_USER_QUOTA: no valid QUOTA HANDLE\n"));
 		return ERROR_NT(NT_STATUS_INVALID_HANDLE);

Modified: branches/SAMBA_3_2/source/smbd/reply.c
===================================================================
--- branches/SAMBA_3_2/source/smbd/reply.c	2007-07-31 11:26:24 UTC (rev 24101)
+++ branches/SAMBA_3_2/source/smbd/reply.c	2007-07-31 12:05:40 UTC (rev 24102)
@@ -709,7 +709,7 @@
 	switch (ioctl_code) {
 		case IOCTL_QUERY_JOB_INFO:		    
 		{
-			files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+			files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 			if (!fsp) {
 				END_PROFILE(SMBioctl);
 				return(UNIXERROR(ERRDOS,ERRbadfid));
@@ -2433,7 +2433,7 @@
 	 * return a zero length response here.
 	 */
 
-	fsp = file_fsp(inbuf,smb_vwv0);
+	fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 
 	if (!FNUM_OK(fsp,conn) || !fsp->can_read) {
 		/*
@@ -2538,7 +2538,7 @@
 	SMB_OFF_T startpos;
 	size_t numtoread;
 	NTSTATUS status;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	struct byte_range_lock *br_lck = NULL;
 	START_PROFILE(SMBlockread);
 
@@ -2624,7 +2624,7 @@
 	char *data;
 	SMB_OFF_T startpos;
 	int outsize = 0;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	START_PROFILE(SMBread);
 
 	CHECK_FSP(fsp,conn);
@@ -2827,7 +2827,7 @@
 
 int reply_read_and_X(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize)
 {
-	files_struct *fsp = file_fsp(inbuf,smb_vwv2);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv2));
 	SMB_OFF_T startpos = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv3);
 	ssize_t nread = -1;
 	size_t smb_maxcnt = SVAL(inbuf,smb_vwv5);
@@ -2928,7 +2928,7 @@
 	SMB_OFF_T startpos;
 	char *data=NULL;
 	BOOL write_through;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	int outsize = 0;
 	NTSTATUS status;
 	START_PROFILE(SMBwritebraw);
@@ -3079,7 +3079,7 @@
 	SMB_OFF_T startpos;
 	char *data;
 	NTSTATUS status = NT_STATUS_OK;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	int outsize = 0;
 	START_PROFILE(SMBwriteunlock);
 	
@@ -3157,7 +3157,7 @@
 	ssize_t nwritten = -1;
 	SMB_OFF_T startpos;
 	char *data;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	int outsize = 0;
 	NTSTATUS status;
 	START_PROFILE(SMBwrite);
@@ -3240,7 +3240,7 @@
 
 int reply_write_and_X(connection_struct *conn, char *inbuf,char *outbuf,int length,int bufsize)
 {
-	files_struct *fsp = file_fsp(inbuf,smb_vwv2);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv2));
 	SMB_OFF_T startpos = IVAL_TO_SMB_OFF_T(inbuf,smb_vwv3);
 	size_t numtowrite = SVAL(inbuf,smb_vwv10);
 	BOOL write_through = BITSETW(inbuf+smb_vwv7,0);
@@ -3362,7 +3362,7 @@
 	SMB_OFF_T res= -1;
 	int mode,umode;
 	int outsize = 0;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	START_PROFILE(SMBlseek);
 
 	CHECK_FSP(fsp,conn);
@@ -3434,7 +3434,7 @@
 {
 	int outsize = set_message(inbuf,outbuf,0,0,False);
 	uint16 fnum = SVAL(inbuf,smb_vwv0);
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	START_PROFILE(SMBflush);
 
 	if (fnum != 0xFFFF)
@@ -3501,7 +3501,7 @@
 		return;
 	}
 
-	fsp = file_fsp((char *)req->inbuf,smb_vwv0);
+	fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
 
 	/*
 	 * We can only use CHECK_FSP if we know it's not a directory.
@@ -3570,7 +3570,7 @@
 	SMB_OFF_T startpos;
 	char *data;
 	struct timespec mtime;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	START_PROFILE(SMBwriteclose);
 
 	CHECK_FSP(fsp,conn);
@@ -3637,7 +3637,7 @@
 	int outsize = set_message(inbuf,outbuf,0,0,False);
 	SMB_BIG_UINT count,offset;
 	NTSTATUS status;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	struct byte_range_lock *br_lck = NULL;
 
 	START_PROFILE(SMBlock);
@@ -3684,7 +3684,7 @@
 	int outsize = set_message(inbuf,outbuf,0,0,False);
 	SMB_BIG_UINT count,offset;
 	NTSTATUS status;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	START_PROFILE(SMBunlock);
 
 	CHECK_FSP(fsp,conn);
@@ -3830,7 +3830,7 @@
 		     char *inbuf,char *outbuf, int dum_size, int dum_buffsize)
 {
 	int outsize = set_message(inbuf,outbuf,0,0,False);
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	NTSTATUS status;
 	START_PROFILE(SMBsplclose);
 
@@ -3935,7 +3935,7 @@
 	int numtowrite;
 	int outsize = set_message(inbuf,outbuf,0,0,False);
 	char *data;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 
 	START_PROFILE(SMBsplwr);
   
@@ -5533,7 +5533,7 @@
 int reply_lockingX(connection_struct *conn, char *inbuf, char *outbuf,
 		   int length, int bufsize)
 {
-	files_struct *fsp = file_fsp(inbuf,smb_vwv2);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv2));
 	unsigned char locktype = CVAL(inbuf,smb_vwv3);
 	unsigned char oplocklevel = CVAL(inbuf,smb_vwv3+1);
 	uint16 num_ulocks = SVAL(inbuf,smb_vwv6);
@@ -5860,7 +5860,7 @@
 	int max_per_packet;
 	size_t tcount;
 	int pad;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	START_PROFILE(SMBreadBmpx);
 
 	/* this function doesn't seem to work - disable by default */
@@ -5931,7 +5931,7 @@
 {
 	struct timespec ts[2];
 	int outsize = 0;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	START_PROFILE(SMBsetattrE);
 
 	outsize = set_message(inbuf,outbuf,0,0,False);
@@ -6000,7 +6000,7 @@
 	BOOL write_through;
 	int smb_doff;
 	char *data;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	NTSTATUS status;
 	START_PROFILE(SMBwriteBmpx);
 
@@ -6112,7 +6112,7 @@
 	char *data;
 	write_bmpx_struct *wbms;
 	BOOL send_response = False; 
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	NTSTATUS status;
 	START_PROFILE(SMBwriteBs);
 
@@ -6201,7 +6201,7 @@
 	SMB_STRUCT_STAT sbuf;
 	int outsize = 0;
 	int mode;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv0);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv0));
 	START_PROFILE(SMBgetattrE);
 
 	outsize = set_message(inbuf,outbuf,11,0,True);

Modified: branches/SAMBA_3_2/source/smbd/trans2.c
===================================================================
--- branches/SAMBA_3_2/source/smbd/trans2.c	2007-07-31 11:26:24 UTC (rev 24101)
+++ branches/SAMBA_3_2/source/smbd/trans2.c	2007-07-31 12:05:40 UTC (rev 24102)
@@ -2859,7 +2859,7 @@
 				 * but we didn't use the last 6 bytes for now 
 				 * --metze 
 				 */
-				fsp = file_fsp(params,0);
+				fsp = file_fsp(SVAL(params,0));
 				if (!CHECK_NTQUOTA_HANDLE_OK(fsp,conn)) {
 					DEBUG(3,("TRANSACT_GET_USER_QUOTA: no valid QUOTA HANDLE\n"));
 					return ERROR_NT(NT_STATUS_INVALID_HANDLE);
@@ -3341,7 +3341,7 @@
 							max_data_bytes);
 		}
 
-		fsp = file_fsp(params,0);
+		fsp = file_fsp(SVAL(params,0));
 		info_level = SVAL(params,2);
 
 		DEBUG(3,("call_trans2qfilepathinfo: TRANSACT2_QFILEINFO: level = %d\n", info_level));
@@ -5860,7 +5860,7 @@
 			return ERROR_NT(NT_STATUS_INVALID_PARAMETER);
 		}
 
-		fsp = file_fsp(params,0);
+		fsp = file_fsp(SVAL(params,0));
 		info_level = SVAL(params,2);    
 
 		if(fsp && (fsp->is_directory || fsp->fh->fd == -1)) {
@@ -6460,7 +6460,7 @@
 					unsigned int max_data_bytes)
 {
 	char *pdata = *ppdata;
-	files_struct *fsp = file_fsp(inbuf,smb_vwv15);
+	files_struct *fsp = file_fsp(SVAL(inbuf,smb_vwv15));
 
 	/* check for an invalid fid before proceeding */
 	



More information about the samba-cvs mailing list