afs: incorrect types for AFSDB IPv4 addresses
authorMark Vitale <mvitale@sinenomine.net>
Tue, 24 Nov 2015 02:03:57 +0000 (21:03 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Mon, 21 Dec 2015 23:14:35 +0000 (18:14 -0500)
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 <buildbot@rampaginggeek.com>
Reviewed-by: Chas Williams <3chas3@gmail.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/WINNT/afsd/cm_dns.h
src/auth/cellconfig.c

index 9c5cf48..42b5496 100644 (file)
    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[],
index cd65f67..ca9dc04 100644 (file)
@@ -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 */