[PATCH 1/1] net: lwip: check if network device is available in do_dhcp

Jerome Forissier jerome.forissier at linaro.org
Thu Dec 5 22:14:14 CET 2024



On 12/5/24 20:17, Heinrich Schuchardt wrote:
> eth_get_dev() returns NULL if no network device is available.
> Not checking the return value leads to a crash when the device
> pointer is dereferenced.
> 
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
>  net/lwip/dhcp.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/net/lwip/dhcp.c b/net/lwip/dhcp.c
> index 9b882cf5b87..e7d9147455c 100644
> --- a/net/lwip/dhcp.c
> +++ b/net/lwip/dhcp.c
> @@ -3,6 +3,7 @@
>  
>  #include <command.h>
>  #include <console.h>
> +#include <log.h>
>  #include <dm/device.h>
>  #include <linux/delay.h>
>  #include <linux/errno.h>
> @@ -112,10 +113,17 @@ static int dhcp_loop(struct udevice *udev)
>  int do_dhcp(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>  {
>  	int ret;
> +	struct udevice *dev;
>  
>  	eth_set_current();
>  
> -	ret = dhcp_loop(eth_get_dev());
> +	dev = eth_get_dev();
> +	if (!dev) {
> +		log_err("No network device\n");
> +		return CMD_RET_FAILURE;
> +	}
> +
> +	ret = dhcp_loop(dev);
>  	if (ret)
>  		return ret;
>  

Reviewed-by: Jerome Forissier <jerome.forissier at linaro.org>

Thanks,
-- 
Jerome


More information about the U-Boot mailing list