Patch "batman-adv: Avoid uninitialized chaddr when handling DHCP" has been added to the 4.19-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    batman-adv: Avoid uninitialized chaddr when handling DHCP

to the 4.19-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     batman-adv-avoid-uninitialized-chaddr-when-handling-.patch
and it can be found in the queue-4.19 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit b3d8eff597ae46c710e194cb5e2e2a3df69f4307
Author: Sven Eckelmann <sven@xxxxxxxxxxxxx>
Date:   Wed Jul 22 20:36:43 2020 +0200

    batman-adv: Avoid uninitialized chaddr when handling DHCP
    
    [ Upstream commit 303216e76dcab6049c9d42390b1032f0649a8206 ]
    
    The gateway client code can try to optimize the delivery of DHCP packets to
    avoid broadcasting them through the whole mesh. But also transmissions to
    the client can be optimized by looking up the destination via the chaddr of
    the DHCP packet.
    
    But the chaddr is currently only done when chaddr is fully inside the
    non-paged area of the skbuff. Otherwise it will not be initialized and the
    unoptimized path should have been taken.
    
    But the implementation didn't handle this correctly. It didn't retrieve the
    correct chaddr but still tried to perform the TT lookup with this
    uninitialized memory.
    
    Reported-by: syzbot+ab16e463b903f5a37036@xxxxxxxxxxxxxxxxxxxxxxxxx
    Fixes: 6c413b1c22a2 ("batman-adv: send every DHCP packet as bat-unicast")
    Signed-off-by: Sven Eckelmann <sven@xxxxxxxxxxxxx>
    Acked-by: Antonio Quartulli <a@xxxxxxxxxxx>
    Signed-off-by: Simon Wunderlich <sw@xxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/batman-adv/gateway_client.c b/net/batman-adv/gateway_client.c
index 140c61a3f1ecf..0c59fefc13719 100644
--- a/net/batman-adv/gateway_client.c
+++ b/net/batman-adv/gateway_client.c
@@ -714,8 +714,10 @@ batadv_gw_dhcp_recipient_get(struct sk_buff *skb, unsigned int *header_len,
 
 	chaddr_offset = *header_len + BATADV_DHCP_CHADDR_OFFSET;
 	/* store the client address if the message is going to a client */
-	if (ret == BATADV_DHCP_TO_CLIENT &&
-	    pskb_may_pull(skb, chaddr_offset + ETH_ALEN)) {
+	if (ret == BATADV_DHCP_TO_CLIENT) {
+		if (!pskb_may_pull(skb, chaddr_offset + ETH_ALEN))
+			return BATADV_DHCP_NO;
+
 		/* check if the DHCP packet carries an Ethernet DHCP */
 		p = skb->data + *header_len + BATADV_DHCP_HTYPE_OFFSET;
 		if (*p != BATADV_DHCP_HTYPE_ETHERNET)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux