]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Return SRV record ports in network byte order
authorRuss Allbery <rra@stanford.edu>
Thu, 14 Oct 2010 20:41:45 +0000 (13:41 -0700)
committerDerrick Brashear <shadow@dementia.org>
Tue, 26 Oct 2010 01:08:40 +0000 (18:08 -0700)
Convert the port extracted from the SRV record return to network byte
order before assigning it to the port array.

The port in a SRV record is extracted by pulling out the high byte
and low byte and then mathematically combining them, which implicity
converts from network byte order to host byte order.  However, the
callers of afsconf_LookupServer expect the port array to be returned
in network byte order since ports are assigned without modification
to the .sin_port field of a struct sockaddr_in.  See also the byte
order of the default afsdbPort value.

Reported by Jan Christoph Nordholz (Debian Bug#600228).

Reviewed-on: http://gerrit.openafs.org/2985
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
(cherry picked from commit ffe445483a07c751202a1ef06136f70402ec895d)
Change-Id: I918ed4acdcfecbe1f879746d80b501714f1e775f
Reviewed-on: http://gerrit.openafs.org/3107
Tested-by: Derrick Brashear <shadow@dementia.org>
src/auth/cellconfig.c

index 011e6bce4a753e284696e4848fe1fb8182f31ff6..bc1b3efc82e884b6ba4b2cfaa196173606a97798 100644 (file)
@@ -1162,7 +1162,7 @@ afsconf_LookupServer(const char *service, const char *protocol,
                memcpy(&ipaddr, he->h_addr, he->h_length);
                cellHostAddrs[server_num] = ipaddr;
                ipRanks[server_num] = (p[0] << 8) | p[1];
-               ports[server_num] = (p[4] << 8) | p[5];
+               ports[server_num] = htons((p[4] << 8) | p[5]);
                /* weight = (p[2] << 8) | p[3]; */
                strncpy(cellHostNames[server_num], host,
                        sizeof(cellHostNames[server_num]));