1a6a784faSopenharmony_ciFrom ffd290b4ab247f82722927ba9b21358daa16dbf1 Mon Sep 17 00:00:00 2001 2a6a784faSopenharmony_ciFrom: Rose <83477269+AtariDreams@users.noreply.github.com> 3a6a784faSopenharmony_ciDate: Thu, 1 Jun 2023 11:33:39 -0400 4a6a784faSopenharmony_ciSubject: [PATCH] Log result of httpGetHostname BEFORE closing the connection 5a6a784faSopenharmony_ci 6a6a784faSopenharmony_cihttpClose frees the memory of con->http. This is problematic because httpGetHostname then tries to access the memory it points to. 7a6a784faSopenharmony_ci 8a6a784faSopenharmony_ciWe have to log the hostname first. 9a6a784faSopenharmony_ci 10a6a784faSopenharmony_ciReference:https://github.com/OpenPrinting/cups/commit/9809947a959e18409dcf562a3466ef246cb90cb2 11a6a784faSopenharmony_ciConflict:NA 12a6a784faSopenharmony_ci--- 13a6a784faSopenharmony_ci scheduler/client.c | 16 +++++++--------- 14a6a784faSopenharmony_ci 1 file changed, 7 insertions(+), 9 deletions(-) 15a6a784faSopenharmony_ci 16a6a784faSopenharmony_cidiff --git a/scheduler/client.c b/scheduler/client.c 17a6a784faSopenharmony_ciindex 91e441188c..327473a4d1 100644 18a6a784faSopenharmony_ci--- a/scheduler/client.c 19a6a784faSopenharmony_ci+++ b/scheduler/client.c 20a6a784faSopenharmony_ci@@ -193,13 +193,11 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */ 21a6a784faSopenharmony_ci /* 22a6a784faSopenharmony_ci * Can't have an unresolved IP address with double-lookups enabled... 23a6a784faSopenharmony_ci */ 24a6a784faSopenharmony_ci- 25a6a784faSopenharmony_ci- httpClose(con->http); 26a6a784faSopenharmony_ci- 27a6a784faSopenharmony_ci cupsdLogClient(con, CUPSD_LOG_WARN, 28a6a784faSopenharmony_ci- "Name lookup failed - connection from %s closed!", 29a6a784faSopenharmony_ci+ "Name lookup failed - closing connection from %s!", 30a6a784faSopenharmony_ci httpGetHostname(con->http, NULL, 0)); 31a6a784faSopenharmony_ci 32a6a784faSopenharmony_ci+ httpClose(con->http); 33a6a784faSopenharmony_ci free(con); 34a6a784faSopenharmony_ci return; 35a6a784faSopenharmony_ci } 36a6a784faSopenharmony_ci@@ -235,11 +233,11 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */ 37a6a784faSopenharmony_ci * with double-lookups enabled... 38a6a784faSopenharmony_ci */ 39a6a784faSopenharmony_ci 40a6a784faSopenharmony_ci- httpClose(con->http); 41a6a784faSopenharmony_ci- 42a6a784faSopenharmony_ci cupsdLogClient(con, CUPSD_LOG_WARN, 43a6a784faSopenharmony_ci- "IP lookup failed - connection from %s closed!", 44a6a784faSopenharmony_ci+ "IP lookup failed - closing connection from %s!", 45a6a784faSopenharmony_ci httpGetHostname(con->http, NULL, 0)); 46a6a784faSopenharmony_ci+ 47a6a784faSopenharmony_ci+ httpClose(con->http); 48a6a784faSopenharmony_ci free(con); 49a6a784faSopenharmony_ci return; 50a6a784faSopenharmony_ci } 51a6a784faSopenharmony_ci@@ -256,11 +254,11 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */ 52a6a784faSopenharmony_ci 53a6a784faSopenharmony_ci if (!hosts_access(&wrap_req)) 54a6a784faSopenharmony_ci { 55a6a784faSopenharmony_ci- httpClose(con->http); 56a6a784faSopenharmony_ci- 57a6a784faSopenharmony_ci cupsdLogClient(con, CUPSD_LOG_WARN, 58a6a784faSopenharmony_ci "Connection from %s refused by /etc/hosts.allow and " 59a6a784faSopenharmony_ci "/etc/hosts.deny rules.", httpGetHostname(con->http, NULL, 0)); 60a6a784faSopenharmony_ci+ 61a6a784faSopenharmony_ci+ httpClose(con->http); 62a6a784faSopenharmony_ci free(con); 63a6a784faSopenharmony_ci return; 64a6a784faSopenharmony_ci } 65a6a784faSopenharmony_ci 66