]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
[Docs] Notes about freeing objects
authorRuslan Baratov <x@ruslo.dev>
Thu, 23 May 2024 14:03:12 +0000 (22:03 +0800)
committerTomas Mraz <tomas@openssl.org>
Fri, 7 Jun 2024 06:44:18 +0000 (08:44 +0200)
- Free objects returned from PEM read
- Free objects returned from d2i_*

Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/24478)

doc/man3/PEM_read_bio_PrivateKey.pod
doc/man3/d2i_X509.pod

index 6e521b268f0db43d080aeee85dc64142c06ad0ed..290a5eef51b294f13a36f8bc5286b44e67e7a9ae 100644 (file)
@@ -332,7 +332,9 @@ NULL but I<*x> is NULL then the structure returned will be written
 to I<*x>. If neither I<x> nor I<*x> is NULL then an attempt is made
 to reuse the structure at I<*x> (but see BUGS and EXAMPLES sections).
 Irrespective of the value of I<x> a pointer to the structure is always
-returned (or NULL if an error occurred).
+returned (or NULL if an error occurred). The caller retains ownership of the
+returned object and needs to free it when it is no longer needed, e.g.
+using X509_free() for X509 objects or EVP_PKEY_free() for EVP_PKEY objects.
 
 The PEM functions which write private keys take an I<enc> parameter
 which specifies the encryption algorithm to use, encryption is done
index 06f764ef8bb8cfebdea8e01710f61cfd94b8a700..1c0b5bf62526d0db15e6468f60b9270eb01d01c7 100644 (file)
@@ -395,7 +395,9 @@ B<d2i_I<TYPE>>() attempts to decode I<len> bytes at I<*ppin>. If successful a
 pointer to the B<I<TYPE>> structure is returned and I<*ppin> is incremented to
 the byte following the parsed data.  If I<a> is not NULL then a pointer
 to the returned structure is also written to I<*a>.  If an error occurred
-then NULL is returned.
+then NULL is returned. The caller retains ownership of the
+returned object and needs to free it when it is no longer needed, e.g.
+using X509_free() for X509 objects or DSA_SIG_free() for DSA_SIG objects.
 
 On a successful return, if I<*a> is not NULL then it is assumed that I<*a>
 contains a valid B<I<TYPE>> structure and an attempt is made to reuse it.