]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
common: fix segfault in public IPv6 addr picking
authorFabian Grünbichler <f.gruenbichler@proxmox.com>
Wed, 22 Mar 2017 15:13:50 +0000 (16:13 +0100)
committerFabian Grünbichler <f.gruenbichler@proxmox.com>
Tue, 28 Mar 2017 06:26:32 +0000 (08:26 +0200)
commitae2ee3d3835fe25b35eeb1a841ee5234cd69eb65
tree7299408b6c35ffd96f5be49ae034462688a37e56
parentc52431b390aad7c5e9e2df505195ac47acd5e030
common: fix segfault in public IPv6 addr picking

sockaddr is only 16 bytes big, so declaring net as sockaddr
and then casting to sockaddr_in6 in case of IPv6 cannot
work.

using sockaddr_storage works for both IPv4 and IPv6, and is
used in other code parts as well.

note that the tests did not find this issue as they declared
the bigger structs and casted the references to (sockaddr *)

Fixes: http://tracker.ceph.com/issues/19371
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
src/common/ipaddr.cc
src/common/pick_address.cc
src/include/ipaddr.h
src/test/test_ipaddr.cc