mirror of
https://github.com/weechat/weechat.git
synced 2026-07-09 11:13:12 +02:00
core: check error ERANGE after call to strtoul in function util_version_number
This commit is contained in:
@@ -843,9 +843,10 @@ util_version_number (const char *version)
|
||||
buf[index_buf] = '\0';
|
||||
if (buf[0])
|
||||
{
|
||||
errno = 0;
|
||||
error = NULL;
|
||||
number = strtoul (buf, &error, 10);
|
||||
if (error && !error[0])
|
||||
if ((errno != ERANGE) && error && !error[0])
|
||||
{
|
||||
if (number > 0xFF)
|
||||
number = 0xFF;
|
||||
|
||||
@@ -767,10 +767,16 @@ TEST(CoreUtil, ParseDelay)
|
||||
|
||||
TEST(CoreUtil, VersionNumber)
|
||||
{
|
||||
char str_version[256];
|
||||
|
||||
CHECK(util_version_number (NULL) == 0);
|
||||
CHECK(util_version_number ("") == 0);
|
||||
CHECK(util_version_number ("abc") == 0);
|
||||
|
||||
/* invalid unsigned long: outside range (0, ULONG_MAX) */
|
||||
snprintf (str_version, sizeof (str_version), "0.0.%lu1", ULONG_MAX);
|
||||
CHECK(util_version_number (str_version) == 0);
|
||||
|
||||
CHECK(util_version_number ("0.3.2-dev") == 0x00030200);
|
||||
CHECK(util_version_number ("0.3.2-rc1") == 0x00030200);
|
||||
CHECK(util_version_number ("0.3.2") == 0x00030200);
|
||||
|
||||
Reference in New Issue
Block a user