Double free in i2o_ECPublicKey
PR: 3338
(Imported from upstream's e34af3ec2b1230a8a523d383f7de505f7cbd381d)
diff --git a/crypto/ec/ec_asn1.c b/crypto/ec/ec_asn1.c
index 2aa319b..35fff74 100644
--- a/crypto/ec/ec_asn1.c
+++ b/crypto/ec/ec_asn1.c
@@ -544,8 +544,10 @@
if (!EC_POINT_point2oct(key->group, key->pub_key, key->conv_form, *outp,
buf_len, NULL)) {
OPENSSL_PUT_ERROR(EC, i2o_ECPublicKey, ERR_R_EC_LIB);
- OPENSSL_free(*outp);
- *outp = NULL;
+ if (new_buffer) {
+ OPENSSL_free(*outp);
+ *outp = NULL;
+ }
return 0;
}