summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-08-18 09:56:58 (GMT)
committerThomas Haller <thaller@redhat.com>2023-08-18 09:57:33 (GMT)
commit8ee8b05ff59999fd88b8a6faae40e7777ccf8c98 (patch)
tree5784b5f09464eea1afeae98462c8799a1f130481
parent09f03f29cf9d26933d2bd319bdeb63f9da9d81e8 (diff)
downloadlibnl-8ee8b05ff59999fd88b8a6faae40e7777ccf8c98.zip
libnl-8ee8b05ff59999fd88b8a6faae40e7777ccf8c98.tar.gz
libnl-8ee8b05ff59999fd88b8a6faae40e7777ccf8c98.tar.bz2
lib: fix error handling in nl_str2ip_proto()
-rw-r--r--lib/utils.c2
-rw-r--r--tests/check-direct.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/lib/utils.c b/lib/utils.c
index c46cf51..04bbe81 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -891,7 +891,7 @@ int nl_str2ip_proto(const char *name)
return p->p_proto;
l = strtoul(name, &end, 0);
- if (l == ULONG_MAX || *end != '\0')
+ if (name == end || *end != '\0' || l > (unsigned long)INT_MAX)
return -NLE_OBJ_NOTFOUND;
return (int) l;
diff --git a/tests/check-direct.c b/tests/check-direct.c
index df4933e..db1f48d 100644
--- a/tests/check-direct.c
+++ b/tests/check-direct.c
@@ -42,14 +42,14 @@ START_TEST(static_checks)
ck_assert_int_eq(i, rtnl_link_str2stat(s));
}
- ck_assert_int_eq(nl_str2ip_proto(""), 0);
+ ck_assert_int_eq(nl_str2ip_proto(""), -NLE_OBJ_NOTFOUND);
ck_assert_int_eq(nl_str2ip_proto("5"), 5);
ck_assert_int_eq(nl_str2ip_proto(" 13 "), -NLE_OBJ_NOTFOUND);
ck_assert_int_eq(nl_str2ip_proto("13"), 13);
ck_assert_int_eq(nl_str2ip_proto("0x13"), 0x13);
ck_assert_int_eq(nl_str2ip_proto("0342"), 0342);
ck_assert_int_eq(nl_str2ip_proto("2147483647"), 2147483647);
- ck_assert_int_eq(nl_str2ip_proto("2147483648"), -2147483648);
+ ck_assert_int_eq(nl_str2ip_proto("2147483648"), -NLE_OBJ_NOTFOUND);
}
END_TEST