windows-check-server-heap-overwrite2-20080827
authorJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 28 Aug 2008 00:42:26 +0000 (00:42 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 28 Aug 2008 00:42:26 +0000 (00:42 +0000)
LICENSE MIT

the incorporation of nconns into the foo incremental was a mistake

src/WINNT/afsd/cm_server.c

index ded221d..fee2435 100644 (file)
@@ -305,7 +305,7 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp)
     {
         lock_ObtainRead(&cm_serverLock);
         nconns = 0;
-        for (nconns=0, tsp = cm_allServersp; tsp && nconns < maxconns; tsp = tsp->allNextp, nconns++) {
+        for (nconns=0, tsp = cm_allServersp; tsp && nconns < maxconns; tsp = tsp->allNextp) {
             if (tsp->type != CM_SERVER_FILE || 
                 tsp->cellp == NULL ||           /* SetPref only */
                 cellp && cellp != tsp->cellp)
@@ -340,6 +340,8 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp)
             rxconns[nconns] = cm_GetRxConn(conns[nconns]);
             if (conntimer[nconns] = (isDown ? 1 : 0))
                 rx_SetConnDeadTime(rxconns[nconns], 10);
+
+            nconns++;
         }
         lock_ReleaseRead(&cm_serverLock);
 
@@ -602,7 +604,7 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp)
         !(flags & (CM_FLAG_CHECKFILESERVERS|CM_FLAG_CHECKVLDBSERVERS)))
     {
         lock_ObtainRead(&cm_serverLock);
-        for (nconns=0, tsp = cm_allServersp; tsp && nconns < maxconns; tsp = tsp->allNextp, nconns++) {
+        for (nconns=0, tsp = cm_allServersp; tsp && nconns < maxconns; tsp = tsp->allNextp) {
             if (tsp->type != CM_SERVER_VLDB ||
                 tsp->cellp == NULL ||           /* SetPref only */
                 cellp && cellp != tsp->cellp)
@@ -638,6 +640,8 @@ void cm_CheckServers(afs_uint32 flags, cm_cell_t *cellp)
             conntimer[nconns] = (isDown ? 1 : 0);
             if (isDown)
                 rx_SetConnDeadTime(rxconns[nconns], 10);
+
+            nconns++;
         }
         lock_ReleaseRead(&cm_serverLock);