From: Jeffrey Altman Date: Fri, 14 Oct 2005 04:26:24 +0000 (+0000) Subject: STABLE14-windows-locking-init-req-20051013 X-Git-Tag: openafs-stable-1_4_1-rc1~37 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=f7d36db11cbc0cd17a4cb2e709327f0495c62a11;p=packages%2Fo%2Fopenafs.git STABLE14-windows-locking-init-req-20051013 two cm_InitReq() calls were in the wrong place opening the possibility for stack corruption (cherry picked from commit ec38f9ed3236005114292f08d1c77891aa3a36d3) --- diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index af340603d..52cf6aa9c 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -4105,6 +4105,8 @@ void cm_CheckLocks() struct rx_connection * callp; cm_scache_t * scp; + cm_InitReq(&req); + lock_ObtainWrite(&cm_scacheLock); cm_lockRefreshCycle++; @@ -4178,8 +4180,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; @@ -4275,6 +4275,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; @@ -4397,8 +4399,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 diff --git a/src/WINNT/afsd/smb.c b/src/WINNT/afsd/smb.c index 7f62f59c5..80bdaf459 100644 --- a/src/WINNT/afsd/smb.c +++ b/src/WINNT/afsd/smb.c @@ -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;