batman-adv: Check for alloc errors when preparing TT local data
authorSven Eckelmann <[email protected]>
Wed, 30 Nov 2016 20:47:09 +0000 (21:47 +0100)
committerSimon Wunderlich <[email protected]>
Fri, 2 Dec 2016 09:46:59 +0000 (10:46 +0100)
batadv_tt_prepare_tvlv_local_data can fail to allocate the memory for the
new TVLV block. The caller is informed about this problem with the returned
length of 0. Not checking this value results in an invalid memory access
when either tt_data or tt_change is accessed.

Reported-by: Dan Carpenter <[email protected]>
Fixes: 7ea7b4a14275 ("batman-adv: make the TT CRC logic VLAN specific")
Signed-off-by: Sven Eckelmann <[email protected]>
Signed-off-by: Simon Wunderlich <[email protected]>
net/batman-adv/translation-table.c

index 7f663092f6de49831680600b2a83aedc15904bac..0dc85eb1cb7addd08a8b3071e076fcacd784e4e2 100644 (file)
@@ -3282,7 +3282,7 @@ static bool batadv_send_my_tt_response(struct batadv_priv *bat_priv,
                                                             &tvlv_tt_data,
                                                             &tt_change,
                                                             &tt_len);
-               if (!tt_len)
+               if (!tt_len || !tvlv_len)
                        goto unlock;
 
                /* Copy the last orig_node's OGM buffer */
@@ -3300,7 +3300,7 @@ static bool batadv_send_my_tt_response(struct batadv_priv *bat_priv,
                                                             &tvlv_tt_data,
                                                             &tt_change,
                                                             &tt_len);
-               if (!tt_len)
+               if (!tt_len || !tvlv_len)
                        goto out;
 
                /* fill the rest of the tvlv with the real TT entries */