@@ -672,6 +672,8 @@ func GeneratePrivateKey(alg string, args [][2]string, eng *Engine) (*PrivateKey,
672672 defer C .free (unsafe .Pointer (calg ))
673673
674674 ctx := C .new_pkey_keygen_ctx (calg , nil )
675+ defer C .EVP_PKEY_CTX_free (ctx )
676+
675677 /*
676678 if eng != nil {
677679 ctx := C.new_pkey_keygen_ctx(calg, eng.engine)
@@ -890,6 +892,7 @@ func (pk *PublicKey) Encrypt(alg string, in []byte, eng *Engine) ([]byte, error)
890892 if out == nil {
891893 return nil , GetErrors ()
892894 }
895+ defer C .free (unsafe .Pointer (out ))
893896 return C .GoBytes (unsafe .Pointer (out ), C .int (outlen )), nil
894897}
895898
@@ -902,6 +905,7 @@ func (sk *PrivateKey) Decrypt(alg string, in []byte, eng *Engine) ([]byte, error
902905 if out == nil {
903906 return nil , GetErrors ()
904907 }
908+ defer C .free (unsafe .Pointer (out ))
905909 return C .GoBytes (unsafe .Pointer (out ), C .int (outlen )), nil
906910}
907911
@@ -915,6 +919,7 @@ func (sk *PrivateKey) Sign(alg string, dgst []byte, eng *Engine) ([]byte, error)
915919 C .ERR_print_errors_fp (C .stderr )
916920 return nil , GetErrors ()
917921 }
922+ defer C .free (unsafe .Pointer (sig ))
918923 return C .GoBytes (unsafe .Pointer (sig ), C .int (siglen )), nil
919924}
920925
@@ -938,6 +943,7 @@ func (sk *PrivateKey) DeriveKey(alg string, peer PublicKey, eng *Engine) ([]byte
938943 if key == nil {
939944 return nil , GetErrors ()
940945 }
946+ defer C .free (unsafe .Pointer (key ))
941947 return C .GoBytes (unsafe .Pointer (key ), C .int (keylen )), nil
942948}
943949
0 commit comments