Commit 7d0effea authored by Andy Polyakov's avatar Andy Polyakov
Browse files

ssl/s3_enc.c: fix logical errors in ssl3_final_finish_mac.

parent fc97c882
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -442,15 +442,16 @@ size_t ssl3_final_finish_mac(SSL *s, const char *sender, size_t len,
    if (!EVP_MD_CTX_copy_ex(ctx, s->s3->handshake_dgst)) {
    if (!EVP_MD_CTX_copy_ex(ctx, s->s3->handshake_dgst)) {
        SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL3_FINAL_FINISH_MAC,
        SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL3_FINAL_FINISH_MAC,
                 ERR_R_INTERNAL_ERROR);
                 ERR_R_INTERNAL_ERROR);
        return 0;
        ret = 0;
        goto err;
    }
    }


    ret = EVP_MD_CTX_size(ctx);
    ret = EVP_MD_CTX_size(ctx);
    if (ret < 0) {
    if (ret < 0) {
        SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL3_FINAL_FINISH_MAC,
        SSLfatal(s, SSL_AD_INTERNAL_ERROR, SSL_F_SSL3_FINAL_FINISH_MAC,
                 ERR_R_INTERNAL_ERROR);
                 ERR_R_INTERNAL_ERROR);
        EVP_MD_CTX_reset(ctx);
        ret = 0;
        return 0;
        goto err;
    }
    }


    if ((sender != NULL && EVP_DigestUpdate(ctx, sender, len) <= 0)
    if ((sender != NULL && EVP_DigestUpdate(ctx, sender, len) <= 0)
@@ -463,6 +464,7 @@ size_t ssl3_final_finish_mac(SSL *s, const char *sender, size_t len,
        ret = 0;
        ret = 0;
    }
    }


 err:
    EVP_MD_CTX_free(ctx);
    EVP_MD_CTX_free(ctx);


    return ret;
    return ret;