Check return value of OBJ_nid2obj in dsa_pub_encode.
authorPavel Kopyl <p.kopyl@samsung.com>
Fri, 27 Oct 2017 13:18:06 +0000 (16:18 +0300)
committerBernd Edlinger <bernd.edlinger@hotmail.de>
Fri, 3 Nov 2017 14:46:51 +0000 (15:46 +0100)
CLA: trivial

Reviewed-by: Kurt Roeckx <kurt@roeckx.be>
Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
(Merged from https://github.com/openssl/openssl/pull/4600)

crypto/dsa/dsa_ameth.c

index 8da047d68a392033cc59b9cfaff18c857ec296ea..9c5b8aa02e9dbd90cb3542836a258094b872e680 100644 (file)
@@ -82,6 +82,7 @@ static int dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey)
     int penclen;
     ASN1_STRING *str = NULL;
     ASN1_INTEGER *pubint = NULL;
+    ASN1_OBJECT *aobj;
 
     dsa = pkey->pkey.dsa;
     if (pkey->save_parameters && dsa->p && dsa->q && dsa->g) {
@@ -114,8 +115,11 @@ static int dsa_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey)
         goto err;
     }
 
-    if (X509_PUBKEY_set0_param(pk, OBJ_nid2obj(EVP_PKEY_DSA),
-                               ptype, str, penc, penclen))
+    aobj = OBJ_nid2obj(EVP_PKEY_DSA);
+    if (aobj == NULL)
+        goto err;
+
+    if (X509_PUBKEY_set0_param(pk, aobj, ptype, str, penc, penclen))
         return 1;
 
  err: