lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 523/593] staging: gdm724x: check for overflow in gdm_lte_netif_rx()
    Date
    From: Dan Carpenter <dan.carpenter@oracle.com>

    [ Upstream commit 7002b526f4ff1f6da34356e67085caafa6be383a ]

    This code assumes that "len" is at least 62 bytes, but we need a check
    to prevent a read overflow.

    Fixes: 61e121047645 ("staging: gdm7240: adding LTE USB driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/YMcoTPsCYlhh2TQo@mwanda
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/staging/gdm724x/gdm_lte.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    diff --git a/drivers/staging/gdm724x/gdm_lte.c b/drivers/staging/gdm724x/gdm_lte.c
    index a41af7aa74ec..bd5f87433404 100644
    --- a/drivers/staging/gdm724x/gdm_lte.c
    +++ b/drivers/staging/gdm724x/gdm_lte.c
    @@ -611,10 +611,12 @@ static void gdm_lte_netif_rx(struct net_device *dev, char *buf,
    * bytes (99,130,83,99 dec)
    */
    } __packed;
    - void *addr = buf + sizeof(struct iphdr) +
    - sizeof(struct udphdr) +
    - offsetof(struct dhcp_packet, chaddr);
    - ether_addr_copy(nic->dest_mac_addr, addr);
    + int offset = sizeof(struct iphdr) +
    + sizeof(struct udphdr) +
    + offsetof(struct dhcp_packet, chaddr);
    + if (offset + ETH_ALEN > len)
    + return;
    + ether_addr_copy(nic->dest_mac_addr, buf + offset);
    }
    }

    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 09:17    [W:4.182 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site