]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
net: lwip: tftp: Fix filename handling
authorAndrew Goodbody <andrew.goodbody@linaro.org>
Fri, 5 Dec 2025 17:28:36 +0000 (17:28 +0000)
committerJerome Forissier <jerome.forissier@linaro.org>
Thu, 18 Dec 2025 15:27:15 +0000 (16:27 +0100)
The code to choose the filename to use does not cope with no name set at
all. Firstly the test for a name in net_boot_file_name tests the pointer
rather than the string it points to. Secondly the cleanup on exit in
this case attempts to free a global variable. Fix both issues.

Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
net/lwip/tftp.c

index 94bacf630752d20357cef40775a25cca39d811dc..6c7ffba661e5903b6b3a6349edf2c8b22eb0d36b 100644 (file)
@@ -279,7 +279,7 @@ int do_tftpb(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
        if (!arg)
                arg = net_boot_file_name;
 
-       if (arg) {
+       if (*arg) {
                /* Parse [ip:[port:]]fname */
                i = 0;
                while ((*(words + i) = strsep(&arg, ":")))
@@ -342,6 +342,7 @@ int do_tftpb(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
        if (tftp_loop(eth_get_dev(), laddr, fname, srvip, port) < 0)
                ret = CMD_RET_FAILURE;
 out:
-       free(arg);
+       if (arg != net_boot_file_name)
+               free(arg);
        return ret;
 }