On 10/26/26 10:28 PM, Marek Vasut wrote:

[...]

+       ret = do_tftpb_raw(laddr, fname, server_ip, server_port, 
TFTP_TIMEOUT_MSECS);
- if (!fname) {
-               log_err("error: no file name\n");
-               ret = CMD_RET_FAILURE;
-               goto out;
-       }
+       if (arg != net_boot_file_name)
+               free(arg);
- if (!laddr) {
-               log_err("error: no load address\n");
-               ret = CMD_RET_FAILURE;
-               goto out;
-       }
+       if (ret)
+               return ret;
- if (net_lwip_start(&net, NET_LWIP_ADDR_ENV_STRICT)) {
-               ret = CMD_RET_FAILURE;
-               goto out;
-       }
+       image_load_addr = laddr;
- if (tftp_loop(&net, laddr, fname, srvip, port, TFTP_TIMEOUT_MSECS) < 0)
-               ret = CMD_RET_FAILURE;
-       else
-               image_load_addr = laddr;
-out:
-       net_lwip_stop(&net);
-       if (arg != net_boot_file_name)
-               free(arg);
        return ret;
  }

The error handling here has to be done slightly differently to pass tests:

"
diff --git a/net/lwip/tftp.c b/net/lwip/tftp.c
index a49d5a72852..97f6ca7d01a 100644
--- a/net/lwip/tftp.c
+++ b/net/lwip/tftp.c
@@ -548,9 +548,9 @@ int do_tftpb(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
                free(arg);

        if (ret)
-               return ret;
+               return CMD_RET_FAILURE;

        image_load_addr = laddr;

-       return ret;
+       return ret ? CMD_RET_FAILURE : CMD_RET_SUCCESS;
 }
"

I'll send a V2 in a few days.

Reply via email to