changeset 897:07ad44cfd9a4

* src/dhcp_prot.c (do_dhcp_down_net): SIOCGLIFADDR and SIOCDLIFADDR take if_laddrreq not ifreq. This caused stack corruption.
author asl
date Thu, 03 Apr 2003 14:04:31 +0000
parents 598fbd635caf
children 6f9085944169
files packages/net/common/current/ChangeLog packages/net/common/current/src/dhcp_prot.c
diffstat 2 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/packages/net/common/current/ChangeLog
+++ b/packages/net/common/current/ChangeLog
@@ -1,3 +1,8 @@
+2003-04-02  Andrew Lunn  <andrew.lunn@ascom.ch>
+
+	* src/dhcp_prot.c (do_dhcp_down_net): SIOCGLIFADDR and SIOCDLIFADDR
+	take if_laddrreq not ifreq. This caused stack corruption.
+
 2003-03-21  Nick Garnett  <nickg@balti.calivar.com>
 
 	* include/network.h: Added include of pkgconf/io_eth_drivers.h
--- a/packages/net/common/current/src/dhcp_prot.c
+++ b/packages/net/common/current/src/dhcp_prot.c
@@ -1303,21 +1303,22 @@ do_dhcp_down_net(const char *intf, struc
 #ifdef INET6
     {
       int s6;
-    
+      struct if_laddrreq iflr;
+      
       s6 = socket(AF_INET6, SOCK_DGRAM, 0);
       if (s6 < 0) {
         perror("socket AF_INET6");
         return false;
       }
       // Now delete the ipv6 addr
-      strcpy(ifr.ifr_name, intf);
-      if (ioctl(s6, SIOCGLIFADDR, &ifr)) {
+      strcpy(iflr.iflr_name, intf);
+      if (ioctl(s6, SIOCGLIFADDR, &iflr)) {
 	perror("SIOCGIFADDR_IN6 1");
 	return false;
       }
       
-      strcpy(ifr.ifr_name, intf);
-      if (ioctl(s6, SIOCDLIFADDR, &ifr)) { /* delete IF addr */
+      strcpy(iflr.iflr_name, intf);
+      if (ioctl(s6, SIOCDLIFADDR, &iflr)) { /* delete IF addr */
         perror("SIOCDIFADDR_IN61");
       }
       close(s6);