From: Mark Vitale Date: Tue, 24 Nov 2015 02:03:57 +0000 (-0500) Subject: afs: incorrect types for AFSDB IPv4 addresses X-Git-Tag: upstream/1.8.0_pre1^2~188 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=b8757341fb9592519032ef64030d0e98195d8d3d;p=packages%2Fo%2Fopenafs.git afs: incorrect types for AFSDB IPv4 addresses DNS lookup results were being handled with int types. Fortunately, this seems to be harmless, due to use of memcpy when the types don't match, and assignment only when both sides were int. However, to avoid any future unpleasantness, change them to afs_uint32. No functional change should be incurred. Change-Id: I31aeabb4ae3194a00b29a1fa767d05af167b4e4f Reviewed-on: http://gerrit.openafs.org/12117 Tested-by: BuildBot Reviewed-by: Chas Williams <3chas3@gmail.com> Reviewed-by: Benjamin Kaduk --- diff --git a/src/WINNT/afsd/cm_dns.h b/src/WINNT/afsd/cm_dns.h index 9c5cf4836..42b54965e 100644 --- a/src/WINNT/afsd/cm_dns.h +++ b/src/WINNT/afsd/cm_dns.h @@ -15,14 +15,14 @@ names for the given cell, ending in null */ int getAFSServer(const char *service, const char *protocol, const char *cellname, unsigned short afsdbPort, - int *cellHostAddrs, char cellHostNames[][MAXHOSTCHARS], + afs_uint32 *cellHostAddrs, char cellHostNames[][MAXHOSTCHARS], unsigned short ports[], unsigned short ipRanks[], int *numServers, int *ttl); /* Same as above, but using cm_unichar_t. Note that this functon will only be defined for DNSAPI_ENV. */ int getAFSServerW(const cm_unichar_t *service, const cm_unichar_t *protocol, const cm_unichar_t *cellName, unsigned short afsdbPort, - int *cellHostAddrs, + afs_uint32 *cellHostAddrs, cm_unichar_t cellHostNames[][MAXHOSTCHARS], unsigned short ports[], unsigned short ipRanks[], diff --git a/src/auth/cellconfig.c b/src/auth/cellconfig.c index cd65f6782..ca9dc04ed 100644 --- a/src/auth/cellconfig.c +++ b/src/auth/cellconfig.c @@ -964,7 +964,7 @@ afsconf_GetExtendedCellInfo(struct afsconf_dir *adir, char *acellName, int afsconf_LookupServer(const char *service, const char *protocol, const char *cellName, unsigned short afsdbPort, - int *cellHostAddrs, char cellHostNames[][MAXHOSTCHARS], + afs_uint32 *cellHostAddrs, char cellHostNames[][MAXHOSTCHARS], unsigned short ports[], unsigned short ipRanks[], int *numServers, int *ttl, char **arealCellName) { @@ -1104,7 +1104,7 @@ afsconf_LookupServer(const char *service, const char *protocol, /* Do we want to get TTL data for the A record as well? */ (he = gethostbyname(host))) { if (he->h_addrtype == AF_INET) { - afs_int32 ipaddr; + afs_uint32 ipaddr; memcpy(&ipaddr, he->h_addr, sizeof(ipaddr)); cellHostAddrs[server_num] = ipaddr; ports[server_num] = afsdbPort; @@ -1138,7 +1138,7 @@ afsconf_LookupServer(const char *service, const char *protocol, /* Do we want to get TTL data for the A record as well? */ (he = gethostbyname(host))) { if (he->h_addrtype == AF_INET) { - afs_int32 ipaddr; + afs_uint32 ipaddr; memcpy(&ipaddr, he->h_addr, sizeof(ipaddr)); cellHostAddrs[server_num] = ipaddr; @@ -1188,7 +1188,7 @@ int afsconf_GetAfsdbInfo(char *acellName, char *aservice, struct afsconf_cell *acellInfo) { - afs_int32 cellHostAddrs[AFSMAXCELLHOSTS]; + afs_uint32 cellHostAddrs[AFSMAXCELLHOSTS]; char cellHostNames[AFSMAXCELLHOSTS][MAXHOSTCHARS]; unsigned short ipRanks[AFSMAXCELLHOSTS]; unsigned short ports[AFSMAXCELLHOSTS]; @@ -1256,7 +1256,7 @@ afsconf_GetAfsdbInfo(char *acellName, char *aservice, int tservice = afsconf_FindService(aservice); /* network byte order */ const char *ianaName = afsconf_FindIANAName(aservice); struct afsconf_entry DNSce; - afs_int32 cellHostAddrs[AFSMAXCELLHOSTS]; + afs_uint32 cellHostAddrs[AFSMAXCELLHOSTS]; char cellHostNames[AFSMAXCELLHOSTS][MAXHOSTCHARS]; unsigned short ipRanks[AFSMAXCELLHOSTS]; unsigned short ports[AFSMAXCELLHOSTS]; /* network byte order */