From 2b1a27a1f834fd5f02cd1c376769bf5450805983 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Wed, 14 Apr 2010 16:02:38 -0700 Subject: [PATCH] stream-ssl: Avoid access-after-free error in update_ssl_config(). Commit b84f503d "stream-ssl: Read existing CA certificate more eagerly during bootstrap" inadvertently introduced an access-after-free error: do_ca_cert_bootstrap() calls stream_ssl_set_ca_cert_file(ca_cert.file_name, true), which calls update_ssl_config(&ca_cert, file_name), which calls free(ca_cert.file_name) then xstrdup(ca_cert.file_name). Fix the problem. Reported-by: Cedric Hobbs Reported-by: Peter Balland --- lib/stream-ssl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/stream-ssl.c b/lib/stream-ssl.c index 153357cd7..aeca21ecc 100644 --- a/lib/stream-ssl.c +++ b/lib/stream-ssl.c @@ -954,9 +954,12 @@ update_ssl_config(struct ssl_config_file *config, const char *file_name) return false; } + /* Update 'config'. */ config->mtime = mtime; - free(config->file_name); - config->file_name = xstrdup(file_name); + if (file_name != config->file_name) { + free(config->file_name); + config->file_name = xstrdup(file_name); + } return true; } -- 2.43.0