projects
/
openssl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
bc50157
)
Memory leak fix.
author
Dr. Stephen Henson
<steve@openssl.org>
Fri, 5 Mar 2004 23:39:42 +0000
(23:39 +0000)
committer
Dr. Stephen Henson
<steve@openssl.org>
Fri, 5 Mar 2004 23:39:42 +0000
(23:39 +0000)
crypto/pem/pem_lib.c
patch
|
blob
|
history
diff --git
a/crypto/pem/pem_lib.c
b/crypto/pem/pem_lib.c
index e921cc4c1286c694a2eae0e06eb221916103101b..7a383f3dffb47cfc3fb166496e69c39c181aecc1 100644
(file)
--- a/
crypto/pem/pem_lib.c
+++ b/
crypto/pem/pem_lib.c
@@
-537,7
+537,7
@@
int PEM_write_bio(BIO *bp, const char *name, char *header, unsigned char *data,
long len)
{
int nlen,n,i,j,outl;
long len)
{
int nlen,n,i,j,outl;
- unsigned char *buf;
+ unsigned char *buf
= NULL
;
EVP_ENCODE_CTX ctx;
int reason=ERR_R_BUF_LIB;
EVP_ENCODE_CTX ctx;
int reason=ERR_R_BUF_LIB;
@@
-557,7
+557,7
@@
int PEM_write_bio(BIO *bp, const char *name, char *header, unsigned char *data,
goto err;
}
goto err;
}
- buf
=(unsigned char *)
OPENSSL_malloc(PEM_BUFSIZE*8);
+ buf
=
OPENSSL_malloc(PEM_BUFSIZE*8);
if (buf == NULL)
{
reason=ERR_R_MALLOC_FAILURE;
if (buf == NULL)
{
reason=ERR_R_MALLOC_FAILURE;
@@
-578,12
+578,15
@@
int PEM_write_bio(BIO *bp, const char *name, char *header, unsigned char *data,
EVP_EncodeFinal(&ctx,buf,&outl);
if ((outl > 0) && (BIO_write(bp,(char *)buf,outl) != outl)) goto err;
OPENSSL_free(buf);
EVP_EncodeFinal(&ctx,buf,&outl);
if ((outl > 0) && (BIO_write(bp,(char *)buf,outl) != outl)) goto err;
OPENSSL_free(buf);
+ buf = NULL;
if ( (BIO_write(bp,"-----END ",9) != 9) ||
(BIO_write(bp,name,nlen) != nlen) ||
(BIO_write(bp,"-----\n",6) != 6))
goto err;
return(i+outl);
err:
if ( (BIO_write(bp,"-----END ",9) != 9) ||
(BIO_write(bp,name,nlen) != nlen) ||
(BIO_write(bp,"-----\n",6) != 6))
goto err;
return(i+outl);
err:
+ if (buf)
+ OPENSSL_free(buf);
PEMerr(PEM_F_PEM_WRITE_BIO,reason);
return(0);
}
PEMerr(PEM_F_PEM_WRITE_BIO,reason);
return(0);
}