From a27a8a66c2c27a62afa566679ef9cf424e758d9f Mon Sep 17 00:00:00 2001 From: Michael Meffie Date: Tue, 26 Jun 2012 15:09:07 -0400 Subject: [PATCH] vldb_check: off by one host address table error Fix several off-by-one errors when traversing the IpMappedAddr table in vldb_check. The last index (254) was not checked in several places. Change-Id: Ida5039fefa1fa55f6f647dee4ed3a26dd84a85d0 Reviewed-on: http://gerrit.openafs.org/7614 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/vlserver/vldb_check.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vlserver/vldb_check.c b/src/vlserver/vldb_check.c index cacb4da2a..0f3f8335b 100644 --- a/src/vlserver/vldb_check.c +++ b/src/vlserver/vldb_check.c @@ -259,7 +259,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]); @@ -323,7 +323,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]); @@ -887,7 +887,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) && @@ -898,7 +898,7 @@ CheckIpAddrs(struct vlheader *header) break; } } - if (ipindex >= MAXSERVERID) + if (ipindex > MAXSERVERID) ipindex = -1; else serveraddrs[ipindex] = -1; -- 2.39.5