# HG changeset patch # User Olaf Wintermann # Date 1726855475 -7200 # Node ID 87485c36081b1f95e99b431ff32c630676c7deb3 # Parent 3966dc878a28e3c88c4a84633e5215ec2aa932c1 fix trace log use after free diff -r 3966dc878a28 -r 87485c36081b src/server/daemon/sessionhandler.c --- a/src/server/daemon/sessionhandler.c Thu Sep 19 22:17:24 2024 +0200 +++ b/src/server/daemon/sessionhandler.c Fri Sep 20 20:04:35 2024 +0200 @@ -279,10 +279,10 @@ EventHttpIO *io = evt_req_init(handler, conn); if(!io) { log_ereport(LOG_DEBUG, "trace reqid: %016llx connection destroyed | evt_req_init failed", (unsigned long long int)conn->id); + log_ereport(LOG_DEBUG, "trace reqid: %016llx free event", (unsigned long long int)conn->id); connection_destroy(conn); free(start_request); free(event); - log_ereport(LOG_DEBUG, "trace reqid: %016llx free event", (unsigned long long int)conn->id); return; } @@ -522,6 +522,7 @@ HTTPRequest *request = io->request; log_ereport(LOG_DEBUG, "trace reqid: %016llx request finish", (unsigned long long int)request->connection->id); + uint64_t reqid = request->connection->id; // remove timeout if(io->watch.intdata) { @@ -547,7 +548,7 @@ free(io); free(event); - log_ereport(LOG_DEBUG, "trace reqid: %016llx free event", (unsigned long long int)request->connection->id); + log_ereport(LOG_DEBUG, "trace reqid: %016llx free event", (unsigned long long int)reqid); return 0; } @@ -556,6 +557,7 @@ EventHttpIO *io = event->cookie; HttpParser *parser = io->parser; HTTPRequest *request = io->request; + uint64_t reqid = request->connection->id; log_ereport(LOG_DEBUG, "trace reqid: %016llx request error", (unsigned long long int)request->connection->id); @@ -578,7 +580,7 @@ free(io); free(event); - log_ereport(LOG_DEBUG, "trace reqid: %016llx free event", (unsigned long long int)request->connection->id); + log_ereport(LOG_DEBUG, "trace reqid: %016llx free event", (unsigned long long int)reqid); return 0; }