Skip site navigation (1)Skip section navigation (2)
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>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48A9CBB5.6030402>