Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dcab5e1e authored by David Engel's avatar David Engel Committed by Arnaldo Carvalho de Melo
Browse files

[IPV4]: Fix setting broadcast for SIOCSIFNETMASK



Fix setting of the broadcast address when the netmask is set via
SIOCSIFNETMASK in Linux 2.6.  The code wanted the old value of
ifa->ifa_mask but used it after it had already been overwritten with
the new value.

Signed-off-by: default avatarDavid Engel <gigem@comcast.net>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
parent 95df1c04
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -715,6 +715,7 @@ int devinet_ioctl(unsigned int cmd, void __user *arg)
			break;
		ret = 0;
		if (ifa->ifa_mask != sin->sin_addr.s_addr) {
			u32 old_mask = ifa->ifa_mask;
			inet_del_ifa(in_dev, ifap, 0);
			ifa->ifa_mask = sin->sin_addr.s_addr;
			ifa->ifa_prefixlen = inet_mask_len(ifa->ifa_mask);
@@ -728,7 +729,7 @@ int devinet_ioctl(unsigned int cmd, void __user *arg)
			if ((dev->flags & IFF_BROADCAST) &&
			    (ifa->ifa_prefixlen < 31) &&
			    (ifa->ifa_broadcast ==
			     (ifa->ifa_local|~ifa->ifa_mask))) {
			     (ifa->ifa_local|~old_mask))) {
				ifa->ifa_broadcast = (ifa->ifa_local |
						      ~sin->sin_addr.s_addr);
			}