]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
net: lwip: check if network device is available in do_dhcp
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Thu, 5 Dec 2024 19:17:36 +0000 (20:17 +0100)
committerTom Rini <trini@konsulko.com>
Thu, 19 Dec 2024 18:17:37 +0000 (12:17 -0600)
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>
net/lwip/dhcp.c

index 9b882cf5b87a1e446ada8f27fa1e27de68679569..e7d9147455c21e44782658341650a6694460b90b 100644 (file)
@@ -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;