diff --git a/src/core/wee-secure.c b/src/core/wee-secure.c index d3c972827..a049bf287 100644 --- a/src/core/wee-secure.c +++ b/src/core/wee-secure.c @@ -1336,3 +1336,27 @@ secure_buffer_open () secure_buffer_display (); } + +/* + * Frees all allocated data. + */ + +void +secure_end () +{ + if (secure_passphrase) + { + free (secure_passphrase); + secure_passphrase = NULL; + } + if (secure_hashtable_data) + { + hashtable_free (secure_hashtable_data); + secure_hashtable_data = NULL; + } + if (secure_hashtable_data_encrypted) + { + hashtable_free (secure_hashtable_data_encrypted); + secure_hashtable_data_encrypted = NULL; + } +} diff --git a/src/core/wee-secure.h b/src/core/wee-secure.h index 9db72fcd4..5850fba9d 100644 --- a/src/core/wee-secure.h +++ b/src/core/wee-secure.h @@ -66,5 +66,6 @@ extern void secure_free (); extern void secure_buffer_display (); extern void secure_buffer_assign (); extern void secure_buffer_open (); +extern void secure_end (); #endif /* __WEECHAT_SECURE_H */ diff --git a/src/core/weechat.c b/src/core/weechat.c index a3722c34c..d8a92900f 100644 --- a/src/core/weechat.c +++ b/src/core/weechat.c @@ -490,6 +490,7 @@ main (int argc, char *argv[]) unhook_all (); /* remove all hooks */ hdata_end (); /* end hdata */ eval_end (); /* end eval */ + secure_end (); /* end secured data */ string_end (); /* end string */ weechat_shutdown (EXIT_SUCCESS, 0); /* quit WeeChat (oh no, why?) */