From 8b6048a28553498b6c4fb099588da984830ded0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 6 Aug 2010 12:55:51 +0000 Subject: [PATCH] * The sockaddr_dl can actually be longer than sockaddr, so we need to use a sockaddr_storage here (wasn't that bad before, as ifreq has a 30 bytes buffer after the sockaddr. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37940 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/network/stack/link.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/network/stack/link.cpp b/src/add-ons/kernel/network/stack/link.cpp index 76b42436c1..564013bf63 100644 --- a/src/add-ons/kernel/network/stack/link.cpp +++ b/src/add-ons/kernel/network/stack/link.cpp @@ -422,11 +422,12 @@ link_control(net_protocol* _protocol, int level, int option, void* value, if (interface == NULL) return B_DEVICE_NOT_FOUND; - get_device_interface_address(interface, &request.ifr_addr); + sockaddr_storage address; + get_device_interface_address(interface, (sockaddr*)&address); put_device_interface(interface); return user_memcpy(&((struct ifreq*)value)->ifr_addr, - &request.ifr_addr, request.ifr_addr.sa_len); + &address, address.ss_len); } case SIOCGIFFLAGS: