]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
ip: ipmaddr.c: Fix possible integer underflow in read_igmp() main
authorAnton Moryakov <ant.v.moryakov@gmail.com>
Sun, 20 Jul 2025 15:38:43 +0000 (18:38 +0300)
committerDavid Ahern <dsahern@kernel.org>
Tue, 29 Jul 2025 23:13:03 +0000 (23:13 +0000)
Static analyzer pointed out a potential error:

Possible integer underflow: left operand is tainted. An integer underflow
may occur due to arithmetic operation (unsigned subtraction) between variable
'len' and value '1', when 'len' is tainted { [0, 18446744073709551615] }

The fix adds a check for 'len == 0' before accessing the last character of
the name, and skips the current line in such cases to avoid the underflow.

Reported-by: SVACE static analyzer
Signed-off-by: Anton Moryakov <ant.v.moryakov@gmail.com>
Signed-off-by: David Ahern <dsahern@kernel.org>
ip/ipmaddr.c

index 2418b303130e3a83e980f2d1c555326f357db769..462b409e47af51d17aadd43f38e048536beafa5b 100644 (file)
@@ -150,6 +150,8 @@ static void read_igmp(struct ma_info **result_p)
 
                        sscanf(buf, "%d%s", &m.index, m.name);
                        len = strlen(m.name);
 
                        sscanf(buf, "%d%s", &m.index, m.name);
                        len = strlen(m.name);
+                       if (len == 0)
+                               continue;
                        if (m.name[len - 1] == ':')
                                m.name[len - 1] = '\0';
                        continue;
                        if (m.name[len - 1] == ':')
                                m.name[len - 1] = '\0';
                        continue;