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.8.0_pre1^2~3275 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=cf57eb294f28084cbb138b1a06bc813e14e6d0ec;p=packages%2Fo%2Fopenafs.git Windows: validate buffer hash tables in cm_MergeStatus Change-Id: I1ff76513e9f2ba08bdeb988a19fec992b08310db Reviewed-on: http://gerrit.openafs.org/5425 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 483c0c2f1..73d64f8e5 100644 --- a/src/WINNT/afsd/cm_buf.c +++ b/src/WINNT/afsd/cm_buf.c @@ -888,7 +888,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 db24b4fe3..687b0cdfe 100644 --- a/src/WINNT/afsd/cm_scache.c +++ b/src/WINNT/afsd/cm_scache.c @@ -1646,11 +1646,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;