diff options
author | Thomas Haller <thaller@redhat.com> | 2023-08-18 09:56:58 (GMT) |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2023-08-18 09:57:33 (GMT) |
commit | 8ee8b05ff59999fd88b8a6faae40e7777ccf8c98 (patch) | |
tree | 5784b5f09464eea1afeae98462c8799a1f130481 | |
parent | 09f03f29cf9d26933d2bd319bdeb63f9da9d81e8 (diff) | |
download | libnl-8ee8b05ff59999fd88b8a6faae40e7777ccf8c98.zip libnl-8ee8b05ff59999fd88b8a6faae40e7777ccf8c98.tar.gz libnl-8ee8b05ff59999fd88b8a6faae40e7777ccf8c98.tar.bz2 |
lib: fix error handling in nl_str2ip_proto()
-rw-r--r-- | lib/utils.c | 2 | ||||
-rw-r--r-- | tests/check-direct.c | 4 |
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 |