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