1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-04 08:43:13 +02:00

core: fix integer overflow in function util_version_number

This commit is contained in:
Sébastien Helleu
2025-05-11 15:59:36 +02:00
parent 96dc934241
commit fdcab27513
3 changed files with 9 additions and 1 deletions
+1
View File
@@ -20,6 +20,7 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
Bug fixes::
* core: fix integer overflow in function util_version_number
* core: fix integer overflow in base32 encoding/decoding
* core: fix integer overflow with decimal numbers in calculation of expression
* core, plugins: fix integer overflow in loops (issue #2178)
+3 -1
View File
@@ -469,7 +469,9 @@ util_version_number (const char *version)
{
if (number < 0)
number = 0;
else if (number > 0xFF)
else if ((i == 0) && (number > 0x7F))
number = 0x7F;
else if ((i > 0) && (number > 0xFF))
number = 0xFF;
version_int[i] = number;
}
+5
View File
@@ -244,4 +244,9 @@ TEST(CoreUtil, VersionNumber)
LONGS_EQUAL(0x01010100, util_version_number ("1.1.1"));
LONGS_EQUAL(0x01010200, util_version_number ("1.1.2"));
LONGS_EQUAL(0x01020304, util_version_number ("1.2.3.4"));
LONGS_EQUAL(0x7EFFFFFF, util_version_number ("126.255.255.255"));
LONGS_EQUAL(0x7FFFFFFF, util_version_number ("127.255.255.255"));
LONGS_EQUAL(0x7FFFFFFF, util_version_number ("128.255.255.255"));
LONGS_EQUAL(0x7FFFFFFF, util_version_number ("255.255.255.255"));
LONGS_EQUAL(0x7FFFFFFF, util_version_number ("999999999.999999999.999999999.999999999"));;
}