1
0
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:
Sébastien Helleu
2026-03-15 13:48:45 +01:00
parent 83d760deae
commit 54eff44d74
2 changed files with 8 additions and 1 deletions
+2 -1
View File
@@ -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;
+6
View File
@@ -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);