OSSL_HTTP_proxy_connect(): Fix glitch in response HTTP header parsing

Fixes #17247

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17250)
This commit is contained in:
Dr. David von Oheimb 2021-11-21 11:51:09 +01:00 committed by Dr. David von Oheimb
parent 858d5ac16d
commit 2490d10d5c

View File

@ -1317,7 +1317,7 @@ int OSSL_HTTP_proxy_connect(BIO *bio, const char *server, const char *port,
/* Check for HTTP/1.x */
mbufp = mbuf;
if (!HAS_PREFIX(mbufp, HTTP_PREFIX)) {
if (!CHECK_AND_SKIP_PREFIX(mbufp, HTTP_PREFIX)) {
ERR_raise(ERR_LIB_HTTP, HTTP_R_HEADER_PARSE_ERROR);
BIO_printf(bio_err, "%s: HTTP CONNECT failed, non-HTTP response\n",
prog);
@ -1335,6 +1335,8 @@ int OSSL_HTTP_proxy_connect(BIO *bio, const char *server, const char *port,
/* RFC 7231 4.3.6: any 2xx status code is valid */
if (!HAS_PREFIX(mbufp, " 2")) {
if (ossl_isspace(*mbufp))
mbufp++;
/* chop any trailing whitespace */
while (read_len > 0 && ossl_isspace(mbuf[read_len - 1]))
read_len--;