From ba61b14f1d5f52026908d316d7564652dbaf1978 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bodo=20M=C3=B6ller?= Date: Thu, 15 Mar 2001 11:33:00 +0000 Subject: [PATCH] More err_data memory leaks --- CHANGES | 3 ++- crypto/err/err.c | 11 +++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGES b/CHANGES index b2075c769e..f943fa1113 100644 --- a/CHANGES +++ b/CHANGES @@ -4,7 +4,8 @@ Changes between 0.9.6 and 0.9.6a [xx XXX 2001] - *) Fix a memory leak in err.c: free err_data string if necessary. + *) Fix memory leaks in err.c: free err_data string if necessary; + don't write to the wrong index in ERR_set_error_data. [Bodo Moeller] *) Implement ssl23_peek (analogous to ssl23_read), which previously diff --git a/crypto/err/err.c b/crypto/err/err.c index 7579c9cea8..be4a71ed06 100644 --- a/crypto/err/err.c +++ b/crypto/err/err.c @@ -387,20 +387,18 @@ void ERR_put_error(int lib, int func, int reason, const char *file, void ERR_clear_error(void) { + int i; ERR_STATE *es; es=ERR_get_state(); -#if 0 - /* hmm... is this needed */ for (i=0; ierr_buffer[i]=0; + err_clear_data(es,i); es->err_file[i]=NULL; es->err_line[i]= -1; - err_clear_data(es,i); } -#endif es->top=es->bottom=0; } @@ -754,8 +752,9 @@ void ERR_set_error_data(char *data, int flags) if (i == 0) i=ERR_NUM_ERRORS-1; + err_clear_data(es,i); es->err_data[i]=data; - es->err_data_flags[es->top]=flags; + es->err_data_flags[i]=flags; } void ERR_add_error_data(int num, ...) @@ -764,7 +763,7 @@ void ERR_add_error_data(int num, ...) int i,n,s; char *str,*p,*a; - s=64; + s=80; str=OPENSSL_malloc(s+1); if (str == NULL) return; str[0]='\0'; -- 2.25.1