[openssl] master update

kaduk at mit.edu kaduk at mit.edu
Sat May 15 20:32:59 UTC 2021


The branch master has been updated
       via  a8457b4c3d86a42209eabe90eddb605f59041f9e (commit)
      from  522827160936319841f3f83fd246f92da96f5686 (commit)


- Log -----------------------------------------------------------------
commit a8457b4c3d86a42209eabe90eddb605f59041f9e
Author: Richard Levitte <levitte at openssl.org>
Date:   Fri May 14 07:23:51 2021 +0200

    ASN1: Fix i2d_provided() return value
    
    i2d_provided() - which is the internal provider data function for
    i2d_KeyParams(), i2d_PrivateKey(), i2d_PublicKey() - didn't treat the
    returned length from OSSL_ENCODER_to_data() quite as well as it should
    have.  A simple added flag that records the state of |*pp| before
    calling OSSL_ENCODER_to_data() fixes the problem.
    
    Fixes #14655
    
    Reviewed-by: Ben Kaduk <kaduk at mit.edu>
    (Merged from https://github.com/openssl/openssl/pull/15277)

-----------------------------------------------------------------------

Summary of changes:
 crypto/asn1/i2d_evp.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/crypto/asn1/i2d_evp.c b/crypto/asn1/i2d_evp.c
index 2a101a6fa3..f03dcb2666 100644
--- a/crypto/asn1/i2d_evp.c
+++ b/crypto/asn1/i2d_evp.c
@@ -48,6 +48,7 @@ static int i2d_provided(const EVP_PKEY *a, int selection,
          * down, when pp != NULL.
          */
         size_t len = INT_MAX;
+        int pp_was_NULL = (pp == NULL || *pp == NULL);
 
         ctx = OSSL_ENCODER_CTX_new_for_pkey(a, selection,
                                             output_info->output_type,
@@ -56,7 +57,7 @@ static int i2d_provided(const EVP_PKEY *a, int selection,
         if (ctx == NULL)
             return -1;
         if (OSSL_ENCODER_to_data(ctx, pp, &len)) {
-            if (pp == NULL)
+            if (pp_was_NULL)
                 ret = (int)len;
             else
                 ret = INT_MAX - (int)len;


More information about the openssl-commits mailing list