Date: Mon, 18 Aug 2008 12:21:25 -0700 From: Sean Bruno <sbruno@miralink.com> To: Dieter <freebsd@sopwith.solgatos.com> Cc: Scott Long <scottl@samsco.org>, freebsd-firewire@freebsd.org Subject: Re: fwcontrol update Message-ID: <48A9CBB5.6030402@miralink.com> In-Reply-To: <200808181913.TAA21449@sopwith.solgatos.com> References: <200808181913.TAA21449@sopwith.solgatos.com>
index | next in thread | previous in thread | raw e-mail
Dieter wrote:
> case 'b':
>
> if (priority_budget < 0 || priority_budget > INT32_MAX)
> errx(EX_USAGE, "%s: invalid number: %s", __func__, optarg);
>
> case 'f':
>
> if ( (adjust_gap_count < 0) || (adjust_gap_count > INT32_MAX) )
> err(EX_USAGE, "%s:adjust_gap_count out of range", __func__);
>
>
> I think "out of range" is better than "invalid number".
> -5 is a valid number.
> current_board = strtol(optarg, NULL, 0);
> Just a minor nit, feel free to ignore this one. :-)
>
> ================================================================================
>
>
Agreed. It's a nit, but I'll change it.
>> case 'c':
>> crom_string = malloc(strlen(optarg)+1);
>> if (crom_string == NULL)
>> err(EX_SOFTWARE, "%s:crom_string malloc", __func__);
>> if ( (strtol(crom_string, NULL, 0) < 0) || strtol(crom_string, NULL, 0) > MAX_BOARDS)
>> err(EX_USAGE, "%s:Invalid value for node", __func__);
>> strcpy(crom_string, optarg);
>>
>
> Strtol() reads freshly malloc-ed memory before anything has been put there.
>
> Perhaps:
>
> case 'c':
> {
> long node_num;
> node_num = strtol(optarg, NULL, 0);
> if ( (node_num < 0) || (node_num > MAX_BOARDS) )
> err(EX_USAGE, "%s:node out of range", __func__);
> crom_string = malloc(strlen(optarg)+1);
> if (crom_string == NULL)
> err(EX_SOFTWARE, "%s:crom_string malloc", __func__);
> strcpy(crom_string, optarg);
>
> ...
>
> }
> case 'd':
>
>
> ================================================================================
>
>
This is a big ol' whoops on my part. The whole "malloc" and copy thing
just seems pointless and needs to be consolidated into just a "strtol()"
instead.
> case 'u':
>
> current_board = strtol(optarg, NULL, 0);
>
> Does this need a range check?
>
> ================================================================================
>
Probably should be a range check( current_board < 0 and current_board >
MAX_BOARDS).
--
Sean Bruno
MiraLink Corporation
6015 NE 80th Ave, Ste 100
Portland, OR 97218
Phone 503-621-5143
Fax 503-621-5199
MSN: sbruno@miralink.com
Google: seanwbruno@gmail.com
Yahoo: sean_bruno@yahoo.com
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48A9CBB5.6030402>
