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

From: Andrew Morton <[email-masked]>
Date: Fri, 22 Aug 2008 12:53:16 -0700

On Fri, 22 Aug 2008 14:17:18 -0500
Steve Wise <[email-masked]> 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!