]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
vldb_check: off by one host address table error
authorMichael Meffie <mmeffie@sinenomine.net>
Tue, 26 Jun 2012 19:09:07 +0000 (15:09 -0400)
committerDerrick Brashear <shadow@your-file-system.com>
Sun, 7 Oct 2012 13:01:56 +0000 (06:01 -0700)
Fix several off-by-one errors when traversing the IpMappedAddr
table in vldb_check. The last index (254) was not checked
in several places.

Reviewed-on: http://gerrit.openafs.org/7614
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
(cherry picked from commit a27a8a66c2c27a62afa566679ef9cf424e758d9f)

Change-Id: I5fd5b452cafe641765247bdf11ef1a1b08cc1529
Reviewed-on: http://gerrit.openafs.org/8209
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
src/vlserver/vldb_check.c

index 01645ae850a218ecc9962db7c78a700220ac77e9..566a197ff058216685fbcae37fffd73f093e8257 100644 (file)
@@ -277,7 +277,7 @@ readheader(struct vlheader *headerp)
            ntohl(headerp->vital_header.totalEntries[1]);
 
     headerp->SIT = ntohl(headerp->SIT);
-    for (i = 0; i < MAXSERVERID; i++)
+    for (i = 0; i <= MAXSERVERID; i++)
        headerp->IpMappedAddr[i] = ntohl(headerp->IpMappedAddr[i]);
     for (i = 0; i < HASHSIZE; i++)
        headerp->VolnameHash[i] = ntohl(headerp->VolnameHash[i]);
@@ -341,7 +341,7 @@ writeheader(struct vlheader *headerp)
            htonl(headerp->vital_header.totalEntries[1]);
 
     headerp->SIT = htonl(headerp->SIT);
-    for (i = 0; i < MAXSERVERID; i++)
+    for (i = 0; i <= MAXSERVERID; i++)
        headerp->IpMappedAddr[i] = htonl(headerp->IpMappedAddr[i]);
     for (i = 0; i < HASHSIZE; i++)
        headerp->VolnameHash[i] = htonl(headerp->VolnameHash[i]);
@@ -960,7 +960,7 @@ CheckIpAddrs(struct vlheader *header)
                e = (struct extentaddr *)&(MHblock[j]);
 
                /* Search the IpMappedAddr array for the reference to this entry */
-               for (ipindex = 0; ipindex < MAXSERVERID; ipindex++) {
+               for (ipindex = 0; ipindex <= MAXSERVERID; ipindex++) {
                    if (((header->IpMappedAddr[ipindex] & 0xff000000) ==
                         0xff000000)
                        &&
@@ -971,7 +971,7 @@ CheckIpAddrs(struct vlheader *header)
                        break;
                    }
                }
-               if (ipindex >= MAXSERVERID)
+               if (ipindex > MAXSERVERID)
                    ipindex = -1;
                else
                    serveraddrs[ipindex] = -1;