From: Daniel Stenberg Date: Mon, 13 Oct 2025 06:41:38 +0000 (+0200) Subject: pop3: function could get the ->transfer field wrong X-Git-Tag: rc-8_17_0-2~97 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=67c4256f7e4f00d8e85b9a7da0b6004bfe5669e1;p=thirdparty%2Fcurl.git pop3: function could get the ->transfer field wrong In pop3_perform(), pop3->transfer was derived from the old data->req.no_body. Then, pop3_perform_command() re-computed data->req.no_body. Now we instead call pop3_perform_command() first. Reported-by: Joshua Rogers Closes #19039 --- diff --git a/lib/pop3.c b/lib/pop3.c index dbcc2d198d..a0fd881a79 100644 --- a/lib/pop3.c +++ b/lib/pop3.c @@ -1377,18 +1377,17 @@ static CURLcode pop3_perform(struct Curl_easy *data, bool *connected, DEBUGF(infof(data, "DO phase starts")); - if(data->req.no_body) { + /* Start the first command in the DO phase, may alter data->req.no_body */ + result = pop3_perform_command(data); + if(result) + return result; + + if(data->req.no_body) /* Requested no body means no transfer */ pop3->transfer = PPTRANSFER_INFO; - } *dophase_done = FALSE; /* not done yet */ - /* Start the first command in the DO phase */ - result = pop3_perform_command(data); - if(result) - return result; - /* Run the state-machine */ result = pop3_multi_statemach(data, dophase_done); *connected = Curl_conn_is_connected(data->conn, FIRSTSOCKET);