summaryrefslogtreecommitdiff
path: root/ospfd
diff options
context:
space:
mode:
authorUlrich Weber <ulrich.weber@sophos.com>2011-12-21 02:24:11 +0400
committerDenis Ovsienko <infrastation@yandex.ru>2012-01-02 19:13:28 +0400
commit664711c1f4cc218073783ff6ce362093debd7b53 (patch)
tree5566b0c8b9d22de55772717ad6c701ea85b6241e /ospfd
parent6fd16207fee6d4d09f29ed7ecf26303a7220e473 (diff)
lib: fix some strtoul() use cases
...otherwise 4294967295 is not a valid value on 32bit systems
Diffstat (limited to 'ospfd')
-rw-r--r--ospfd/ospf_vty.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index c928e819..97c8e8d6 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -80,8 +80,11 @@ ospf_str2area_id (const char *str, struct in_addr *area_id, int *format)
/* match "<0-4294967295>". */
else
{
+ if (*str == '-')
+ return -1;
+ errno = 0;
ret = strtoul (str, &endptr, 10);
- if (*endptr != '\0' || (ret == ULONG_MAX && errno == ERANGE))
+ if (*endptr != '\0' || errno || ret > UINT32_MAX)
return -1;
area_id->s_addr = htonl (ret);