X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fdsa%2Fdsa_ameth.c;h=5482330c84ded5b47aeb24e21dcd7a9019465231;hp=a588740cd80c327ed652bc9e27d3748f456560cc;hb=ba64ae6cd13182f4f1d99beed8274e17bf8a92b7;hpb=3a88efd48c4de1e6d46f1b379dd3ff84847297d5 diff --git a/crypto/dsa/dsa_ameth.c b/crypto/dsa/dsa_ameth.c index a588740cd8..5482330c84 100644 --- a/crypto/dsa/dsa_ameth.c +++ b/crypto/dsa/dsa_ameth.c @@ -237,8 +237,16 @@ static int dsa_priv_decode(EVP_PKEY *pkey, PKCS8_PRIV_KEY_INFO *p8) } else { + const unsigned char *q = p; if (!(privkey=d2i_ASN1_INTEGER(NULL, &p, pklen))) goto decerr; + if (privkey->type == V_ASN1_NEG_INTEGER) + { + p8->broken = PKCS8_NEG_PRIVKEY; + ASN1_INTEGER_free(privkey); + if (!(privkey=d2i_ASN1_UINTEGER(NULL, &q, pklen))) + goto decerr; + } if (ptype != V_ASN1_SEQUENCE) goto decerr; }