From b8757341fb9592519032ef64030d0e98195d8d3d Mon Sep 17 00:00:00 2001 From: Mark Vitale Date: Mon, 23 Nov 2015 21:03:57 -0500 Subject: [PATCH] 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 --- src/WINNT/afsd/cm_dns.h | 4 ++-- src/auth/cellconfig.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/WINNT/afsd/cm_dns.h b/src/WINNT/afsd/cm_dns.h index 9c5cf48366..42b54965ea 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 cd65f67825..ca9dc04ed4 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 */