From caf707bd7cc377b9d497c76710fa910afb6d492c Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 19 Jul 2022 17:54:23 +0200 Subject: [PATCH] sendf: fix paused header writes since after the header API Regression since d1e4a67 Reported-by: Sergey Ogryzkov Fixes #9180 --- lib/sendf.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/sendf.c b/lib/sendf.c index 32714255d4dc5a..d19fb552331a30 100644 --- a/lib/sendf.c +++ b/lib/sendf.c @@ -496,6 +496,9 @@ static CURLcode pausewrite(struct Curl_easy *data, } } DEBUGASSERT(i < 3); + if(i >= 3) + /* There are more types to store than what fits: very bad */ + return CURLE_OUT_OF_MEMORY; } else i = 0; @@ -607,8 +610,10 @@ static CURLcode chop_write(struct Curl_easy *data, /* here we pass in the HEADER bit only since if this was body as well then it was passed already and clearly that didn't trigger the pause, so this is saved for later with the HEADER bit only */ - return pausewrite(data, CLIENTWRITE_HEADER, optr, olen); - + return pausewrite(data, CLIENTWRITE_HEADER | + (type & (CLIENTWRITE_STATUS|CLIENTWRITE_CONNECT| + CLIENTWRITE_1XX|CLIENTWRITE_TRAILER)), + optr, olen); if(wrote != olen) { failf(data, "Failed writing header"); return CURLE_WRITE_ERROR;