vos: fix crash when getting a non-loopback host address
authorMichael Meffie <mmeffie@sinenomine.net>
Thu, 20 Nov 2014 21:54:25 +0000 (16:54 -0500)
committerJeffrey Altman <jaltman@your-file-system.com>
Wed, 26 Nov 2014 14:38:18 +0000 (09:38 -0500)
commit0125d8c911faf0706667a1733fc086adae6decce
tree0cbbdafe365d1758c76773edea3bb01a7b27a03e
parent21c9f5341ecb7ef17f37f19406804971090f276f
vos: fix crash when getting a non-loopback host address

Fix a crash in vos when trying to find a non loopback server address.

The struct hostent h_addr_list field is a null terminated array of
pointers to addresses, in network byte order.  The struct hostent length
field is not the length of the h_addr_list array (as one would expect),
but rather the length of an address in bytes, which is always 4 for IP
version 4 addresses.

Verify the returned addresses are IPv4 and take care to not iterate
beyond the end of the address pointer array.

The non-loopback address check was introduced
commit dc2a4fe4e949c250ca25708aa5a6dd575878fd7e.

Change-Id: I75dff5ed2a7dd3c4bd6605b375a7a2ffa91eff01
Reviewed-on: http://gerrit.openafs.org/11609
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
src/volser/vos.c