Re: [PATCH] bonding: enhance the IP address check of arp_ip_target

2006-07-12 Thread Tetsuo Takata
Hi,


Thank you for the comments.


 Why not just use sscanf?
Here's a fixed version of the previous patch, that uses sscanf.

 
 Better yet, use a better interface like netlink rather than module
 parameters.
Wouldn't that be overkill?


best regards,

---
Signed-off-by: Tetsuo Takata [EMAIL PROTECTED]

--- linux-2.6.17.4/drivers/net/bonding/bond_main.c  2006-06-18 
10:49:35.0 +0900
+++ linux-2.6.17.4-enhance-ipcheck/drivers/net/bonding/bond_main.c  
2006-07-12 17:20:39.0 +0900
@@ -4455,7 +4455,36 @@ static int bond_check_params(struct bond
 arp_ip_count++) {
/* not complete check, but should be good enough to
   catch mistakes */
-   if (!isdigit(arp_ip_target[arp_ip_count][0])) {
+   int ip1, ip2, ip3, ip4, notip = 0;
+   char dummy;
+
+   /* notip's number means error code for debug purpose */
+   do {
+   if (sscanf(arp_ip_target[arp_ip_count], %d.%d.%d.%d%c,
+   ip1, ip2, ip3, ip4, dummy) 
!= 4) {
+   notip = 1;
+   break;
+   } else {
+   if (ip1  0 || ip1  255) {
+   notip = 1;
+   break;
+   }
+   if (ip2  0 || ip2  255) {
+   notip = 1;
+   break;
+   }
+   if (ip3  0 || ip3  255) {
+   notip = 1;
+   break;
+   }
+   if (ip4  0 || ip4  255) {
+   notip = 1;
+   break;
+   }
+   }
+   } while(0);
+
+   if (notip) {
printk(KERN_WARNING DRV_NAME
   : Warning: bad arp_ip_target module parameter 
   (%s), ARP monitoring will not be performed\n,

-
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


Re: [PATCH] bonding: enhance the IP address check of arp_ip_target

2006-07-11 Thread Stephen Hemminger
On Wed, 12 Jul 2006 13:25:52 +0900
Tetsuo Takata [EMAIL PROTECTED] wrote:

 Hi,
 
 
 I found this in drivers/net/bonding/bond_main.c.
  /* not complete check, but should be good enough to
  catch mistakes */
 
 I made a patch which I believe is little bit better than this,
 I hope...
 
 
 best regards,
 
 ---
 Signed-off-by: Tetsuo Takata [EMAIL PROTECTED]
 
 --- linux-2.6.17.3/drivers/net/bonding/bond_main.c2006-07-01 
 02:37:38.0 +0900
 +++ linux-2.6.17.3-bonding-ipcheck/drivers/net/bonding/bond_main.c
 2006-07-12 09:51:12.0 +0900
 @@ -4455,7 +4455,113 @@ static int bond_check_params(struct bond
arp_ip_count++) {
   /* not complete check, but should be good enough to
  catch mistakes */
 - if (!isdigit(arp_ip_target[arp_ip_count][0])) {
 + int i, notip = 0;
 + char *cp;
 +
 + cp = arp_ip_target[arp_ip_count];
 +
 + /* notip's number is the error code for debug purpose */
 + do {
 + if (cp == NULL) {
 + notip = 1;
 + break;
 + }
 +
 + /* check digit */
 + for (i = 0; isdigit(*cp); i++) {
 + if ((i  0) || (i = 3)) {
 + notip = 2;
 + break;
 + }
 + cp++;
 + }
 + if (notip)
 + break;
 +
 + if (i == 0) {
 + notip = 3;
 + break;
 + }
 +
 + /* check delimiter */
 + if (*cp != '.') {
 + notip = 4;
 + break;
 + }
 + cp++;
 +
 + /* check digit */
 + for (i = 0; isdigit(*cp); i++) {
 + if ((i  0) || (i = 3)) {
 + notip = 5;
 + break;
 + }
 + cp++;
 + }
 + if (notip)
 + break;
 +
 + if (i == 0) {
 + notip = 6;
 + break;
 + }
 +
 + /* check delimiter */
 + if (*cp != '.') {
 + notip = 7;
 + break;
 + }
 + cp++;
 +
 + /* check digit */
 + for (i = 0; isdigit(*cp); i++) {
 + if ((i  0) || (i = 3)) {
 + notip = 8;
 + break;
 + }
 + cp++;
 + }
 + if (notip)
 + break;
 +
 + if (i == 0) {
 + notip = 9;
 + break;
 + }
 +
 + /* check delimiter */
 + if (*cp != '.') {
 + notip = 10;
 + break;
 + }
 + cp++;
 +
 + /* check digit */
 + for (i = 0; isdigit(*cp); i++) {
 + if ((i  0) || (i = 3)) {
 + notip = 11;
 + break;
 + }
 + cp++;
 + }
 + if (notip)
 + break;
 +
 + if (i == 0) {
 + notip = 12;
 + break;
 + }
 +
 +
 + /* check EOS */
 + if (*cp != '\0') {
 + notip = 13;
 + break;
 + }
 +
 + } while(0);
 +
 + if (notip) {
   printk(KERN_WARNING DRV_NAME
  : Warning: bad arp_ip_target module parameter 
  (%s), ARP monitoring will not be performed\n,
 
 -
 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

Why not just use sscanf?

-- 
If one would give me six lines written by the hand of the most honest
man, I would find something in them to have him hanged. -- Cardinal Richlieu
-
To unsubscribe from this list: send the line unsubscribe netdev in

Re: [PATCH] bonding: enhance the IP address check of arp_ip_target

2006-07-11 Thread Herbert Xu
Stephen Hemminger [EMAIL PROTECTED] wrote:
 
 Why not just use sscanf?

Better yet, use a better interface like netlink rather than module
parameters.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmVHI~} [EMAIL PROTECTED]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
-
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