s6gmac: Read buffer overflow
Subsystems (2)
PATCH 1/1 s6gmac: Read buffer overflow
Check whether index is within bounds before testing the element. In the last iteration i is PHY_MAX_ADDR. the condition `!(p = pd->mii.bus->phy_map[PHY_MAX_ADDR])' is undefined and may evaluate to false, which leads to a dereference of this invalid phy_map in the phy_connect() below.
Signed-off-by Roel Kluin <[email protected]>
---
drivers/net/s6gmac.c +1 -1
@@ -793,7 +793,7 @@ static inline int s6gmac_phy_start(struct net_device *dev)struct s6gmac *pd =netdev_priv (dev);int i =0 ;struct phy_device *p =NULL ; -while ((!(p = pd->mii.bus->phy_map[i])) && (i <PHY_MAX_ADDR )) +while ((i <PHY_MAX_ADDR ) && (!(p = pd->mii.bus->phy_map[i]))) i++; p =phy_connect (dev,dev_name (&p->dev), &s6gmac_adjust_link,0 ,PHY_INTERFACE_MODE_RGMII );
From: Roel Kluin <[email protected]>
Date: Sun, 02 Aug 2009 08:20:13 +0200
Quoted 7 lines
Check whether index is within bounds before testing the element. In the last iteration i is
PHY_MAX_ADDR. the condition `!(p = pd->mii.bus->phy_map[PHY_MAX_ADDR])' is undefined and may evaluate to false, which leads to a dereference of this invalidphy_mapin thephy_connect()below.Signed-off-by Roel Kluin <[email protected]>
Applied.