]> granicus.if.org Git - php/commitdiff
Check EVP_SealFinal return code
authorJakub Zelenka <bukka@php.net>
Sun, 25 Oct 2015 17:53:39 +0000 (17:53 +0000)
committerJakub Zelenka <bukka@php.net>
Sun, 25 Oct 2015 17:53:39 +0000 (17:53 +0000)
This can be done since we no longer support OpenSSL 0.9.6

ext/openssl/openssl.c

index a2bf8042c6990d3fce33c1be1e2f5a0e350e5102..b2ae5fcaff2e3a89e3ef667280d859bade9dab7a 100644 (file)
@@ -4963,15 +4963,14 @@ PHP_FUNCTION(openssl_seal)
        EVP_CIPHER_CTX_cleanup(&ctx);
 
        if (!EVP_SealInit(&ctx, cipher, eks, eksl, &iv_buf[0], pkeys, nkeys) ||
-                       !EVP_SealUpdate(&ctx, buf, &len1, (unsigned char *)data, (int)data_len)) {
+                       !EVP_SealUpdate(&ctx, buf, &len1, (unsigned char *)data, (int)data_len) ||
+                       !EVP_SealFinal(&ctx, buf + len1, &len2)) {
                RETVAL_FALSE;
                efree(buf);
                EVP_CIPHER_CTX_cleanup(&ctx);
                goto clean_exit;
        }
 
-       EVP_SealFinal(&ctx, buf + len1, &len2);
-
        if (len1 + len2 > 0) {
                zval_dtor(sealdata);
                buf[len1 + len2] = '\0';