aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>2024-12-05 20:17:36 +0100
committerTom Rini <trini@konsulko.com>2024-12-19 12:17:37 -0600
commitd701c6ab4220a3f5e0fdef06720816d67c46f56d (patch)
tree2027cc0c02345f11652b09cc8eeae795ffc52b53
parentb6691d0add999459393a19f0f02b66243ee2a4ae (diff)
downloadu-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.c10
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;