]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
batman-adv: tt: replace open-coded overflow check with helper
authorSven Eckelmann <sven@narfation.org>
Sun, 3 May 2026 20:46:15 +0000 (22:46 +0200)
committerSven Eckelmann <sven@narfation.org>
Mon, 1 Jun 2026 12:22:02 +0000 (14:22 +0200)
The commit 6043a632dd06 ("batman-adv: reject oversized global TT response
buffers") introduced an open-coded check to ensure that the allocated
buffer size can be stored in a u16. The check_add_overflow() helper can
perform the addition and overflow check in one step, so use that instead.

Acked-by: Antonio Quartulli <antonio@mandelbit.com>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
net/batman-adv/translation-table.c

index 8903b2f84f5122be4919f437363fd50ec02ee8fc..5e134d08a80fd0451e3fcad50fa3b4ab472b4804 100644 (file)
@@ -799,10 +799,10 @@ batadv_tt_prepare_tvlv_global_data(struct batadv_orig_node *orig_node,
 {
        u16 num_vlan = 0;
        u16 tvlv_len = 0;
-       unsigned int change_offset;
        struct batadv_tvlv_tt_vlan_data *tt_vlan;
        struct batadv_orig_node_vlan *vlan;
        u16 total_entries = 0;
+       size_t change_offset;
        u8 *tt_change_ptr;
        int vlan_entries;
        u16 sum_entries;
@@ -826,14 +826,11 @@ batadv_tt_prepare_tvlv_global_data(struct batadv_orig_node *orig_node,
        if (*tt_len < 0)
                *tt_len = batadv_tt_len(total_entries);
 
-       if (change_offset > U16_MAX || *tt_len > U16_MAX - change_offset) {
+       if (check_add_overflow(*tt_len, change_offset, &tvlv_len)) {
                *tt_len = 0;
                goto out;
        }
 
-       tvlv_len = *tt_len;
-       tvlv_len += change_offset;
-
        *tt_data = kmalloc(tvlv_len, GFP_ATOMIC);
        if (!*tt_data) {
                *tt_len = 0;