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;
   }