Fix return code in tls1_mac
authorMatt Caswell <matt@openssl.org>
Fri, 19 May 2017 09:28:43 +0000 (10:28 +0100)
committerMatt Caswell <matt@openssl.org>
Fri, 19 May 2017 16:02:11 +0000 (17:02 +0100)
The return code from tls1_mac is supposed to be a boolean 0 for fail, 1 for
success. In one place we returned -1 on error. This would cause code calling
the mac function to erroneously see this as a success (because a non-zero
value is being treated as success in all call sites).

Fortunately, AFAICT, the place that returns -1 can only happen on an
internal error so is not under attacker control. Additionally this code only
appears in master. In 1.1.0 the return codes are treated differently.
Therefore there are no security implications.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3495)

ssl/record/ssl3_record.c

index 85d726fb201e69043ac492ece0ad6d48924876f4..8ebb1b92ee23110b0111338c4b5988a0a186f78f 100644 (file)
@@ -1225,7 +1225,7 @@ int tls1_mac(SSL *ssl, SSL3_RECORD *rec, unsigned char *md, int sending)
                                    ssl->s3->read_mac_secret,
                                    ssl->s3->read_mac_secret_size, 0) <= 0) {
             EVP_MD_CTX_free(hmac);
-            return -1;
+            return 0;
         }
     } else {
         /* TODO(size_t): Convert these calls */