]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
windows-locking-init-req-20051013
authorJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 14 Oct 2005 04:25:04 +0000 (04:25 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 14 Oct 2005 04:25:04 +0000 (04:25 +0000)
two cm_InitReq() calls were in the wrong place opening the possibility for
stack corruption

src/WINNT/afsd/cm_vnodeops.c
src/WINNT/afsd/smb.c

index 707c9aaac0854d9901f9b69216e88030b2ad4f2c..caee462e78f240de40887bcaa44b0170fb5f59f5 100644 (file)
@@ -4122,6 +4122,8 @@ void cm_CheckLocks()
     struct rx_connection * callp;
     cm_scache_t * scp;
 
+    cm_InitReq(&req);
+
     lock_ObtainWrite(&cm_scacheLock);
 
     cm_lockRefreshCycle++;
@@ -4195,8 +4197,6 @@ void cm_CheckLocks()
                     cm_fid_t cfid;
                     cm_user_t * userp;
 
-                    cm_InitReq(&req);
-
                     tfid.Volume = scp->fid.volume;
                     tfid.Vnode = scp->fid.vnode;
                     tfid.Unique = scp->fid.unique;
@@ -4292,6 +4292,8 @@ long cm_RetryLock(cm_file_lock_t *oldFileLock, int client_is_dead)
     struct rx_connection * callp;
     int newLock = -1;
 
+    cm_InitReq(&req);
+
     if (client_is_dead) {
         code = CM_ERROR_TIMEDOUT;
         goto handleCode;
@@ -4414,8 +4416,6 @@ long cm_RetryLock(cm_file_lock_t *oldFileLock, int client_is_dead)
         cm_fid_t cfid;
         cm_user_t * userp;
 
-        cm_InitReq(&req);
-
         code = cm_SyncOp(scp, NULL, oldFileLock->userp, &req, 0,
                          CM_SCACHESYNC_NEEDCALLBACK
                         | CM_SCACHESYNC_GETSTATUS
index 7f62f59c5f44df29c93ee5c5e78bdbba2001780d..80bdaf4597061ae1bad74b241cb532e112257a5a 100644 (file)
@@ -4839,17 +4839,6 @@ smb_Rename(smb_vc_t *vcp, smb_packet_t *inp, char * oldPathp, char * newPathp, i
     spacep = inp->spacep;
     smb_StripLastComponent(spacep->data, &oldLastNamep, oldPathp);
 
-    /*
-     * Changed to use CASEFOLD always.  This enables us to rename Foo/baz when
-     * what actually exists is foo/baz.  I don't know why the code used to be
-     * the way it was.  1/29/96
-     *
-     *         caseFold = ((vcp->flags & SMB_VCFLAG_USEV3) ? 0: CM_FLAG_CASEFOLD);
-     *
-     * Changed to use CM_FLAG_FOLLOW.  7/24/96
-     *
-     * caseFold = CM_FLAG_CASEFOLD;
-     */
     caseFold = CM_FLAG_FOLLOW | CM_FLAG_CASEFOLD;
     code = cm_NameI(cm_data.rootSCachep, spacep->data, caseFold,
                     userp, tidPathp, &req, &oldDscp);
@@ -4962,6 +4951,7 @@ smb_Rename(smb_vc_t *vcp, smb_packet_t *inp, char * oldPathp, char * newPathp, i
     thyper.HighPart = 0;
 
     code = cm_ApplyDir(oldDscp, smb_RenameProc, &rock, &thyper, userp, &req, NULL);
+    osi_Log1(smb_logp, "smb_RenameProc returns %ld", code);
 
     if (code == CM_ERROR_STOPNOW)
         code = 0;