Do not overallocate for tmp.ciphers_raw

Well, not as much, at least.

Commit 07afdf3c3a changed things so
that for SSLv2 format ClientHellos we store the cipher list in the
TLS format, i.e., with two bytes per cipher, to be consistent with
historical behavior.

However, the space allocated for the array still performed the computation
with three bytes per cipher, a needless over-allocation (though a relatively
small one, all things considered).

Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2281)
This commit is contained in:
Benjamin Kaduk 2017-01-24 10:50:21 -06:00 committed by Matt Caswell
parent 52ad5b60e3
commit f1429b85c5

View File

@ -3470,7 +3470,8 @@ STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,
* slightly over allocate because we won't store those. But that isn't a
* problem.
*/
raw = s->s3->tmp.ciphers_raw = OPENSSL_malloc(numciphers * n);
raw = OPENSSL_malloc(numciphers * TLS_CIPHER_LEN);
s->s3->tmp.ciphers_raw = raw;
if (raw == NULL) {
*al = SSL_AD_INTERNAL_ERROR;
goto err;