Skip to contentSkip to conversation

bonding: add ip checks when store ip target

PATCH Superseded Ding Tianhong 3 participants 3 messages Nov 12, 2013

Subsystems (3)

v1 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 bonding: add ip checks when store ip target

I met a Bug when I add ip target with the wrong ip address:

echo +500.500.500.500 > /sys/class/net/bond0/bonding/arp_ip_target

the wrong ip address will transfor to 245.245.245.244 and add to the ip target success, it is uncorrect, so I add checks to avoid adding wrong address.

The in4_pton() will set wrong ip address to 0.0.0.0, it will return by the next check and will not add to ip target.

---
 drivers/net/bonding/bond_sysfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/bonding/bond_sysfs.c +1 -1
index 4838a97..5b7bf37 100644
@@ -612,7 +612,7 @@ static ssize_t bonding_store_arp_targets(struct device *d,
                return restart_syscall();
 
        targets = bond->params.arp_targets;
-       newtarget = in_aton(buf + 1);
+       in4_pton(buf + 1, strlen(buf) - 1, (u8 *)&newtarget, -1, NULL);
        /* look for adds */
        if (buf[0] == '+') {
                if ((newtarget == 0) || (newtarget == htonl(INADDR_BROADCAST))) {

--
1.8.2.1

#1 lore raw
Quoted 8 lines · Ding Tianhong

I met a Bug when I add ip target with the wrong ip address:

echo +500.500.500.500 > /sys/class/net/bond0/bonding/arp_ip_target

the wrong ip address will transfor to 245.245.245.244 and add to the ip target success, it is uncorrect, so I add checks to avoid adding wrong address.

Quoted 7 lines

The in4_pton() will set wrong ip address to 0.0.0.0, it will return by the next check and will not add to ip target.

---
drivers/net/bonding/bond_sysfs.c | 2 +-

1 file changed, 1 insertion(+), 1 deletion(-)

Your mail client, apparently, transformed tabs into spaces, so the patch doesn't apply.

Quoted 18 lines
drivers/net/bonding/bond_sysfs.c +1 -2
index 4838a97..5b7bf37 100644
@@ -612,7 +612,7 @@ static ssize_t bonding_store_arp_targets(struct device *d,
               return restart_syscall();
 
       targets = bond->params.arp_targets;
-       newtarget = in_aton(buf + 1);
+       in4_pton(buf + 1, strlen(buf) - 1, (u8 *)&newtarget, -1, NULL);
       /* look for adds */
       if (buf[0] == '+') {
               if ((newtarget == 0) || (newtarget == htonl(INADDR_BROADCAST))) {
--

1.8.2.1

#2 lore raw
Quoted 12 lines · Veaceslav Falico
Quoted 11 lines · Ding Tianhong

I met a Bug when I add ip target with the wrong ip address:

echo +500.500.500.500 > /sys/class/net/bond0/bonding/arp_ip_target

the wrong ip address will transfor to 245.245.245.244 and add to the ip target success, it is uncorrect, so I add checks to avoid adding wrong address.

The in4_pton() will set wrong ip address to 0.0.0.0, it will return by the next check and will not add to ip target.

Quoted 8 lines
Quoted 4 lines

---
drivers/net/bonding/bond_sysfs.c | 2 +-

1 file changed, 1 insertion(+), 1 deletion(-)

Your mail client, apparently, transformed tabs into spaces, so the patch doesn't apply.

yes, the patch was made in net-next, I forget to make it in net, I'll send it by office mail in office later. Thanks.
Regards
Ding

Quoted 24 lines
Quoted 19 lines
drivers/net/bonding/bond_sysfs.c +1 -1
index 4838a97..5b7bf37 100644
@@ -612,7 +612,7 @@ static ssize_t bonding_store_arp_targets(struct 
 device *d,
 return restart_syscall();
 
 targets = bond->params.arp_targets;
- newtarget = in_aton(buf + 1);
+ in4_pton(buf + 1, strlen(buf) - 1, (u8 *)&newtarget, -1, NULL);
 /* look for adds */
 if (buf[0] == '+') {

if ((newtarget == 0) || (newtarget == htonl(INADDR_BROADCAST))) {

Signature · 1 line
1.8.2.1
Signature · 3 lines
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html