diff options
| author | Jan Engelhardt <jengelh@inai.de> | 2012-07-14 00:06:45 +0200 | 
|---|---|---|
| committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-07-31 13:32:15 +0200 | 
| commit | d18b451ec82bbaeaf385241ebdf926912a075ade (patch) | |
| tree | 2436e864aae16fde5e7dcdd35e01e5cf2020e272 | |
| parent | c0b7138f39882e2bf8f3d85d15e0ffbd868ed7ba (diff) | |
libxt_devgroup: guard against negative numbers
More corrections of the strtoul kind.
Signed-off-by: Jan Engelhardt <jengelh@inai.de>
| -rw-r--r-- | extensions/libxt_devgroup.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/extensions/libxt_devgroup.c b/extensions/libxt_devgroup.c index 69ae279d..4a69c822 100644 --- a/extensions/libxt_devgroup.c +++ b/extensions/libxt_devgroup.c @@ -46,14 +46,16 @@ static void devgroup_parse_groupspec(const char *arg, unsigned int *group,  				     unsigned int *mask)  {  	char *end; +	bool ok; -	*group = strtoul(arg, &end, 0); -	if (end != arg && (*end == '/' || *end == '\0')) { +	ok = xtables_strtoui(arg, &end, group, 0, UINT32_MAX); +	if (ok && (*end == '/' || *end == '\0')) {  		if (*end == '/') -			*mask = strtoul(end + 1, &end, 0); +			ok = xtables_strtoui(end + 1, NULL, mask, +			                     0, UINT32_MAX);  		else  			*mask = ~0U; -		if (*end != '\0' || end == arg) +		if (!ok)  			xtables_error(PARAMETER_PROBLEM,  				      "Bad group value \"%s\"", arg);  	} else { | 
