diff options
author | Heinrich Schuchardt <heinrich.schuchardt@canonical.com> | 2024-12-05 20:17:36 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-12-19 12:17:37 -0600 |
commit | d701c6ab4220a3f5e0fdef06720816d67c46f56d (patch) | |
tree | 2027cc0c02345f11652b09cc8eeae795ffc52b53 | |
parent | b6691d0add999459393a19f0f02b66243ee2a4ae (diff) | |
download | u-boot-d701c6ab4220a3f5e0fdef06720816d67c46f56d.zip u-boot-d701c6ab4220a3f5e0fdef06720816d67c46f56d.tar.gz u-boot-d701c6ab4220a3f5e0fdef06720816d67c46f56d.tar.bz2 |
net: lwip: check if network device is available in do_dhcp
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@canonical.com>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
-rw-r--r-- | net/lwip/dhcp.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/net/lwip/dhcp.c b/net/lwip/dhcp.c index 9b882cf..e7d9147 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; |