Pass struct smb_request to file_fsp
authorVolker Lendecke <vl@samba.org>
Thu, 9 Oct 2008 13:25:17 +0000 (15:25 +0200)
committerVolker Lendecke <vl@samba.org>
Mon, 13 Oct 2008 17:32:37 +0000 (19:32 +0200)
The goal is to get rid of the chain_fsp global variable

source3/include/proto.h
source3/smbd/files.c
source3/smbd/nttrans.c
source3/smbd/open.c
source3/smbd/reply.c
source3/smbd/trans2.c

index 7dc0319e7d317c72e673d7b173f3eb3c6bfaf84e..a36a725b4fbaec3c9263f83cbde62a7f19312395 100644 (file)
@@ -9590,7 +9590,7 @@ files_struct *file_find_print(void);
 void file_sync_all(connection_struct *conn);
 void file_free(files_struct *fsp);
 files_struct *file_fnum(uint16 fnum);
-files_struct *file_fsp(uint16 fid);
+files_struct *file_fsp(struct smb_request *req, uint16 fid);
 void file_chain_reset(void);
 NTSTATUS dup_file_fsp(files_struct *fsp,
                                uint32 access_mask,
index 519f4945f2268bc4c1d4c91b4fe0005d687c7eea..ee3b6f520c9d1963cb36d6440b82b8fe3a459270 100644 (file)
@@ -470,7 +470,7 @@ files_struct *file_fnum(uint16 fnum)
  Get an fsp from a packet given the offset of a 16 bit fnum.
 ****************************************************************************/
 
-files_struct *file_fsp(uint16 fid)
+files_struct *file_fsp(struct smb_request *req, uint16 fid)
 {
        files_struct *fsp;
 
index 43492bf8b62043e84c72470b199db116082b1422..baa91e2955c1cd2797fbfb6dd9b5029f60ffee0e 100644 (file)
@@ -1399,7 +1399,7 @@ static void call_nt_transact_notify_change(connection_struct *conn,
                return;
        }
 
-       fsp = file_fsp(SVAL(setup,4));
+       fsp = file_fsp(req, SVAL(setup,4));
        filter = IVAL(setup, 0);
        recursive = (SVAL(setup, 6) != 0) ? True : False;
 
@@ -1499,7 +1499,7 @@ static void call_nt_transact_rename(connection_struct *conn,
                return;
        }
 
-       fsp = file_fsp(SVAL(params, 0));
+       fsp = file_fsp(req, SVAL(params, 0));
        if (!check_fsp(conn, req, fsp)) {
                return;
        }
@@ -1568,7 +1568,7 @@ static void call_nt_transact_query_security_desc(connection_struct *conn,
                return;
        }
 
-       fsp = file_fsp(SVAL(params,0));
+       fsp = file_fsp(req, SVAL(params,0));
        if(!fsp) {
                reply_doserror(req, ERRDOS, ERRbadfid);
                return;
@@ -1664,7 +1664,7 @@ static void call_nt_transact_set_security_desc(connection_struct *conn,
                return;
        }
 
-       if((fsp = file_fsp(SVAL(params,0))) == NULL) {
+       if((fsp = file_fsp(req, SVAL(params,0))) == NULL) {
                reply_doserror(req, ERRDOS, ERRbadfid);
                return;
        }
@@ -1728,7 +1728,7 @@ static void call_nt_transact_ioctl(connection_struct *conn,
        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(fidnum);
+       fsp=file_fsp(req, fidnum);
        /* 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);*/
@@ -2035,7 +2035,7 @@ static void call_nt_transact_get_user_quota(connection_struct *conn,
        }
 
        /* maybe we can check the quota_fnum */
-       fsp = file_fsp(SVAL(params,0));
+       fsp = file_fsp(req, SVAL(params,0));
        if (!check_fsp_ntquota_handle(conn, req, fsp)) {
                DEBUG(3,("TRANSACT_GET_USER_QUOTA: no valid QUOTA HANDLE\n"));
                reply_nterror(req, NT_STATUS_INVALID_HANDLE);
@@ -2302,7 +2302,7 @@ static void call_nt_transact_set_user_quota(connection_struct *conn,
        }
 
        /* maybe we can check the quota_fnum */
-       fsp = file_fsp(SVAL(params,0));
+       fsp = file_fsp(req, SVAL(params,0));
        if (!check_fsp_ntquota_handle(conn, req, fsp)) {
                DEBUG(3,("TRANSACT_GET_USER_QUOTA: no valid QUOTA HANDLE\n"));
                reply_nterror(req, NT_STATUS_INVALID_HANDLE);
index 8727e80d5f740353f4d5900e31bd35d1efb4114c..6edbe5ab9213c79fdb573e2023823692ea67477d 100644 (file)
@@ -2899,7 +2899,7 @@ NTSTATUS create_file(connection_struct *conn,
                 * This filename is relative to a directory fid.
                 */
                char *parent_fname = NULL;
-               files_struct *dir_fsp = file_fsp(root_dir_fid);
+               files_struct *dir_fsp = file_fsp(req, root_dir_fid);
 
                if (dir_fsp == NULL) {
                        status = NT_STATUS_INVALID_HANDLE;
index 48403073f73222f5750abe3c141e5ba7f67aa59b..976611cc3753434d1af640be85b26b38a4dbda6e 100644 (file)
@@ -825,8 +825,8 @@ void reply_ioctl(struct smb_request *req)
        switch (ioctl_code) {
                case IOCTL_QUERY_JOB_INFO:                  
                {
-                       files_struct *fsp = file_fsp(SVAL(req->inbuf,
-                                                         smb_vwv0));
+                       files_struct *fsp = file_fsp(
+                               req, SVAL(req->inbuf, smb_vwv0));
                        if (!fsp) {
                                reply_doserror(req, ERRDOS, ERRbadfid);
                                END_PROFILE(SMBioctl);
@@ -2808,7 +2808,7 @@ void reply_readbraw(struct smb_request *req)
         * return a zero length response here.
         */
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        /*
         * We have to do a check_fsp by hand here, as
@@ -2950,7 +2950,7 @@ void reply_lockread(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if (!check_fsp(conn, req, fsp)) {
                END_PROFILE(SMBlockread);
@@ -3058,7 +3058,7 @@ void reply_read(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if (!check_fsp(conn, req, fsp)) {
                END_PROFILE(SMBread);
@@ -3302,7 +3302,7 @@ void reply_read_and_X(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv2));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv2));
        startpos = IVAL_TO_SMB_OFF_T(req->inbuf,smb_vwv3);
        smb_maxcnt = SVAL(req->inbuf,smb_vwv5);
 
@@ -3450,7 +3450,7 @@ void reply_writebraw(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
        if (!check_fsp(conn, req, fsp)) {
                error_to_writebrawerr(req);
                END_PROFILE(SMBwritebraw);
@@ -3655,7 +3655,7 @@ void reply_writeunlock(struct smb_request *req)
                return;
        }
        
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if (!check_fsp(conn, req, fsp)) {
                END_PROFILE(SMBwriteunlock);
@@ -3762,7 +3762,7 @@ void reply_write(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if (!check_fsp(conn, req, fsp)) {
                END_PROFILE(SMBwrite);
@@ -3992,7 +3992,7 @@ void reply_write_and_X(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv2));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv2));
        startpos = IVAL_TO_SMB_OFF_T(req->inbuf,smb_vwv3);
        write_through = BITSETW(req->inbuf+smb_vwv7,0);
 
@@ -4113,7 +4113,7 @@ void reply_lseek(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if (!check_fsp(conn, req, fsp)) {
                return;
@@ -4199,7 +4199,7 @@ void reply_flush(struct smb_request *req)
        }
 
        fnum = SVAL(req->inbuf,smb_vwv0);
-       fsp = file_fsp(fnum);
+       fsp = file_fsp(req, fnum);
 
        if ((fnum != 0xFFFF) && !check_fsp(conn, req, fsp)) {
                return;
@@ -4268,7 +4268,7 @@ void reply_close(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        /*
         * We can only use check_fsp if we know it's not a directory.
@@ -4346,7 +4346,7 @@ void reply_writeclose(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if (!check_fsp(conn, req, fsp)) {
                END_PROFILE(SMBwriteclose);
@@ -4433,7 +4433,7 @@ void reply_lock(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if (!check_fsp(conn, req, fsp)) {
                END_PROFILE(SMBlock);
@@ -4492,7 +4492,7 @@ void reply_unlock(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if (!check_fsp(conn, req, fsp)) {
                END_PROFILE(SMBunlock);
@@ -4674,7 +4674,7 @@ void reply_printclose(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if (!check_fsp(conn, req, fsp)) {
                END_PROFILE(SMBsplclose);
@@ -4816,7 +4816,7 @@ void reply_printwrite(struct smb_request *req)
                return;
        }
   
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if (!check_fsp(conn, req, fsp)) {
                END_PROFILE(SMBsplwr);
@@ -6644,7 +6644,7 @@ void reply_lockingX(struct smb_request *req)
                return;
        }
        
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv2));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv2));
        locktype = CVAL(req->inbuf,smb_vwv3);
        oplocklevel = CVAL(req->inbuf,smb_vwv3+1);
        num_ulocks = SVAL(req->inbuf,smb_vwv6);
@@ -7020,7 +7020,7 @@ void reply_setattrE(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if(!fsp || (fsp->conn != conn)) {
                reply_doserror(req, ERRDOS, ERRbadfid);
@@ -7131,7 +7131,7 @@ void reply_getattrE(struct smb_request *req)
                return;
        }
 
-       fsp = file_fsp(SVAL(req->inbuf,smb_vwv0));
+       fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv0));
 
        if(!fsp || (fsp->conn != conn)) {
                reply_doserror(req, ERRDOS, ERRbadfid);
index 1e2095a3ea3550ad575029425371a1d2fbd6e9ba..850552eca6ae32e1bbbd144336db61ee9edc219f 100644 (file)
@@ -3298,7 +3298,7 @@ cap_low = 0x%x, cap_high = 0x%x\n",
                                 * but we didn't use the last 6 bytes for now 
                                 * --metze 
                                 */
-                               fsp = file_fsp(SVAL(params,0));
+                               fsp = file_fsp(req, SVAL(params,0));
 
                                if (!check_fsp_ntquota_handle(conn, req,
                                                              fsp)) {
@@ -3873,7 +3873,7 @@ static void call_trans2qfilepathinfo(connection_struct *conn,
                        return;
                }
 
-               fsp = file_fsp(SVAL(params,0));
+               fsp = file_fsp(req, SVAL(params,0));
                info_level = SVAL(params,2);
 
                DEBUG(3,("call_trans2qfilepathinfo: TRANSACT2_QFILEINFO: level = %d\n", info_level));
@@ -6582,7 +6582,7 @@ static void call_trans2setfilepathinfo(connection_struct *conn,
                        return;
                }
 
-               fsp = file_fsp(SVAL(params,0));
+               fsp = file_fsp(req, SVAL(params,0));
                /* Basic check for non-null fsp. */
                if (!check_fsp_open(conn, req, fsp)) {
                        return;
@@ -7250,7 +7250,7 @@ static void call_trans2ioctl(connection_struct *conn,
                             unsigned int max_data_bytes)
 {
        char *pdata = *ppdata;
-       files_struct *fsp = file_fsp(SVAL(req->inbuf,smb_vwv15));
+       files_struct *fsp = file_fsp(req, SVAL(req->inbuf,smb_vwv15));
 
        /* check for an invalid fid before proceeding */