diff options
author | Rich Salz <rsalz@openssl.org> | 2018-03-27 16:25:08 -0400 |
---|---|---|
committer | Rich Salz <rsalz@openssl.org> | 2018-03-27 16:25:08 -0400 |
commit | e6e9170d6e28038768895e1af18e3aad8093bf4b (patch) | |
tree | 62f594f0968ff8d6c27795377a102e4aab373b00 /crypto/err | |
parent | 98c03302fb7b855647aa14022f61f5fb272e514a (diff) |
Allow NULL for some _free routines.
Based on the description in https://github.com/openssl/openssl/pull/5757,
this re-implements the "allow NULL to be passed" behavior of a number of
xxx_free routines. I also fixed up some egregious formatting errors
that were nearby.
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5761)
Diffstat (limited to 'crypto/err')
-rw-r--r-- | crypto/err/err.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/crypto/err/err.c b/crypto/err/err.c index 4ae6178686..4c5f354e5c 100644 --- a/crypto/err/err.c +++ b/crypto/err/err.c @@ -233,29 +233,30 @@ static void build_SYS_str_reasons(void) } #endif -#define err_clear_data(p,i) \ +#define err_clear_data(p, i) \ do { \ - if ((p)->err_data_flags[i] & ERR_TXT_MALLOCED) \ - { \ + if ((p)->err_data_flags[i] & ERR_TXT_MALLOCED) {\ OPENSSL_free((p)->err_data[i]); \ - (p)->err_data[i]=NULL; \ - } \ - (p)->err_data_flags[i]=0; \ - } while(0) + (p)->err_data[i] = NULL; \ + } \ + (p)->err_data_flags[i] = 0; \ + } while (0) -#define err_clear(p,i) \ +#define err_clear(p, i) \ do { \ - (p)->err_flags[i]=0; \ - (p)->err_buffer[i]=0; \ - err_clear_data(p,i); \ - (p)->err_file[i]=NULL; \ - (p)->err_line[i]= -1; \ - } while(0) + err_clear_data(p, i); \ + (p)->err_flags[i] = 0; \ + (p)->err_buffer[i] = 0; \ + (p)->err_file[i] = NULL; \ + (p)->err_line[i] = -1; \ + } while (0) static void ERR_STATE_free(ERR_STATE *s) { int i; + if (s == NULL) + return; for (i = 0; i < ERR_NUM_ERRORS; i++) { err_clear_data(s, i); } |