]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
ftp: fix ftp_do_more returning with *completep unset
authorDaniel Stenberg <daniel@haxx.se>
Sat, 20 Sep 2025 21:23:07 +0000 (23:23 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 21 Sep 2025 07:47:01 +0000 (09:47 +0200)
Specifically, when ftpc->wait_data_conn was true and
Curl_conn_connect(...) returned with serv_conned == false the code
called ftp_check_ctrl_on_data_wait and returned without setting
*completep.

Now set it to 0 at function start to avoid this happening again.

Reported in Joshua's sarif data

Closes #18650

lib/ftp.c

index df94ea5e6684401f1231f4f83e8b5fc197ef86fa..13b613bc1e86d4ba947e875964b1b1e979b1cb8a 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -3594,6 +3594,9 @@ static CURLcode ftp_do_more(struct Curl_easy *data, int *completep)
 
   if(!ftpc || !ftp)
     return CURLE_FAILED_INIT;
+
+  *completep = 0; /* default to stay in the state */
+
   /* if the second connection has been set up, try to connect it fully
    * to the remote host. This may not complete at this time, for several
    * reasons:
@@ -3612,7 +3615,6 @@ static CURLcode ftp_do_more(struct Curl_easy *data, int *completep)
         /* this is a EPSV connect failing, try PASV instead */
         return ftp_epsv_disable(data, ftpc, conn);
       }
-      *completep = (int)complete;
       return result;
     }
   }