From: Rainer Jung Date: Sat, 13 Feb 2016 13:03:23 +0000 (-0500) Subject: RT4304: Look for plaintext HTTP X-Git-Tag: OpenSSL_1_1_0-pre3~24 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=124f6ff4c248842f52fa45b21efe58159413e8f7;p=oweals%2Fopenssl.git RT4304: Look for plaintext HTTP Reviewed-by: Richard Levitte --- diff --git a/ssl/record/ssl3_record.c b/ssl/record/ssl3_record.c index 60e8042f1d..919202a46e 100644 --- a/ssl/record/ssl3_record.c +++ b/ssl/record/ssl3_record.c @@ -274,6 +274,21 @@ int ssl3_get_record(SSL *s) } if ((version >> 8) != SSL3_VERSION_MAJOR) { + if (s->first_packet) { + /* Go back to start of packet, look at the five bytes + * that we have. */ + p = RECORD_LAYER_get_packet(&s->rlayer); + if (strncmp((char *)p, "GET ", 4) == 0 || + strncmp((char *)p, "POST ", 5) == 0 || + strncmp((char *)p, "HEAD ", 5) == 0 || + strncmp((char *)p, "PUT ", 4) == 0) { + SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_HTTP_REQUEST); + goto err; + } else if (strncmp((char *)p, "CONNE", 5) == 0) { + SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_HTTPS_PROXY_REQUEST); + goto err; + } + } SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_WRONG_VERSION_NUMBER); goto err; }