From: Jeffrey Altman Date: Wed, 14 Sep 2011 21:46:32 +0000 (-0400) Subject: Windows: validate buffer hash tables in cm_MergeStatus X-Git-Tag: upstream/1.6.1.pre1^2~107 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=8f532e80419eae34ea72ee05ba6ef39fdd43b605;p=packages%2Fo%2Fopenafs.git Windows: validate buffer hash tables in cm_MergeStatus Reviewed-on: http://gerrit.openafs.org/5425 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman (cherry picked from commit cf57eb294f28084cbb138b1a06bc813e14e6d0ec) Change-Id: Ia685aebdc443113b4ddb968155f306cc53680af9 Reviewed-on: http://gerrit.openafs.org/6039 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsd/cm_buf.c b/src/WINNT/afsd/cm_buf.c index 42f24722e..e11276146 100644 --- a/src/WINNT/afsd/cm_buf.c +++ b/src/WINNT/afsd/cm_buf.c @@ -885,7 +885,7 @@ void buf_Recycle(cm_buf_t *bp) i = BUF_HASH(&bp->fid, &bp->offset); lbpp = &(cm_data.buf_scacheHashTablepp[i]); - for(tbp = *lbpp; tbp; lbpp = &tbp->hashp, tbp = *lbpp) { + for(tbp = *lbpp; tbp; lbpp = &tbp->hashp, tbp = tbp->hashp) { if (tbp == bp) break; } diff --git a/src/WINNT/afsd/cm_scache.c b/src/WINNT/afsd/cm_scache.c index 3d5d60808..4c756edac 100644 --- a/src/WINNT/afsd/cm_scache.c +++ b/src/WINNT/afsd/cm_scache.c @@ -1641,11 +1641,14 @@ void cm_MergeStatus(cm_scache_t *dscp, j = BUF_HASH(&bp->fid, &bp->offset); lbpp = &(cm_data.buf_scacheHashTablepp[j]); - for(tbp = *lbpp; tbp; lbpp = &tbp->hashp, tbp = *lbpp) { + for(tbp = *lbpp; tbp; lbpp = &tbp->hashp, tbp = tbp->hashp) { if (tbp == bp) break; } + /* we better find it */ + osi_assertx(tbp != NULL, "cm_MergeStatus: buf_scacheHashTablepp table screwup"); + *lbpp = bp->hashp; /* hash out */ bp->hashp = NULL;