Skip to content

Commit 3f36b03

Browse files
committed
bug fixed: memory leak in pkey.go
1 parent eba487e commit 3f36b03

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

go/gmssl/pkey.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)