Before this fix, Curl_tls_keylog_open() assigned the environment
variable result to a global keylog_file_name without freeing any prior
allocation. If the file cannot be opened (e.g., permission error)
keylog_file_fp stays NULL, so subsequent calls to Curl_tls_keylog_open
will overwrite keylog_file_name and leak the previous allocation.
Spotted by Codex Security
Closes #21427
void Curl_tls_keylog_open(void)
{
if(!keylog_file_fp) {
- keylog_file_name = curl_getenv("SSLKEYLOGFILE");
+ keylog_file_name = getenv("SSLKEYLOGFILE");
if(keylog_file_name) {
keylog_file_fp = curlx_fopen(keylog_file_name, FOPEN_APPENDTEXT);
if(keylog_file_fp) {
curlx_fclose(keylog_file_fp);
keylog_file_fp = NULL;
}
- curlx_safefree(keylog_file_name);
}
bool Curl_tls_keylog_enabled(void)