Re: [PATCH 1/4 2.6.28] cxgb3 - manage a private ip address for iSCSI

From: Steve Wise
Date: Fri Aug 22 2008 - 16:06:44 EST


Andrew Morton wrote:
On Fri, 22 Aug 2008 14:17:18 -0500
Steve Wise <swise@xxxxxxxxxxxxxxxxxxxxx> wrote:

Andrew Morton wrote:
+ unsigned long octet;
+ const char *parse = buf;
+ char *endp;
+ int i;
+
+ for (i = 1; i <= 4; i++) {
+ octet = simple_strtoul(parse, &endp, 10);
+ if (endp == buf || octet > 255 ||
+ (i < 4 && *endp != '.') ||
+ (i == 4 && *endp != '\0' && *endp != '\n'))
+ return -EINVAL;
+ a = (a << 8) | octet;
+ parse = endp+1;
+ }
+ pi->iscsi_ipaddr = htonl(a);
+ return endp-buf;
+}
This appears to be taking a dotted quad ipv4 address in ascii form,
turning it into a u32 while performing checking?

Surely we have a library function somewhere in networking which does
this? If not, I'd suggest writing one.

try in_aton() from include/linux/inet.h.


yeah. But that function is a crock. No error checking at all!

Oh you want error checking?

:)

Yea if this is a user/sysadmin supplied value, then we need a rubust inet_aton() in the kernel to validate it...


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/