]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Windows: validate buffer hash tables in cm_MergeStatus
authorJeffrey Altman <jaltman@your-file-system.com>
Wed, 14 Sep 2011 21:46:32 +0000 (17:46 -0400)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 15 Nov 2011 13:51:31 +0000 (05:51 -0800)
Reviewed-on: http://gerrit.openafs.org/5425
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
(cherry picked from commit cf57eb294f28084cbb138b1a06bc813e14e6d0ec)

Change-Id: Ia685aebdc443113b4ddb968155f306cc53680af9
Reviewed-on: http://gerrit.openafs.org/6039
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
src/WINNT/afsd/cm_buf.c
src/WINNT/afsd/cm_scache.c

index 42f24722e8587cac52e38969135a269565c2e1a1..e11276146cdc41b9f2ebc0c69968dae5c1939132 100644 (file)
@@ -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;
         }
index 3d5d60808bf1694c54ec23a05abe3270c93deb65..4c756edacaeff5ec0f38f9ecbf9a7bcffc711731 100644 (file)
@@ -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;