Fix issue found by covscan

Related: #2159603
This commit is contained in:
Tomas Korbar 2023-07-20 14:46:38 +02:00
parent ae3ba5327c
commit 9c83050d1b
2 changed files with 30 additions and 18 deletions

View File

@ -1,6 +1,14 @@
--- a/modules/generators/mod_status.c 2023/04/26 08:30:14 1909428 commit 84e6f25f67de9a9bddefdcdbfee3f251fead647e
+++ b/modules/generators/mod_status.c 2023/04/26 10:08:42 1909429 Author: Tomas Korbar <tkorbar@redhat.com>
@@ -186,7 +186,8 @@ Date: Thu Jul 20 14:41:33 2023 +0200
Fix duplicate presence of keys printed by mod_status
diff --git a/modules/generators/mod_status.c b/modules/generators/mod_status.c
index 5917953..5bada07 100644
--- a/modules/generators/mod_status.c
+++ b/modules/generators/mod_status.c
@@ -186,7 +186,8 @@ static int status_handler(request_rec *r)
apr_uint32_t up_time; apr_uint32_t up_time;
ap_loadavg_t t; ap_loadavg_t t;
int j, i, res, written; int j, i, res, written;
@ -10,7 +18,7 @@
int busy; int busy;
unsigned long count; unsigned long count;
unsigned long lres, my_lres, conn_lres; unsigned long lres, my_lres, conn_lres;
@@ -203,6 +204,7 @@ @@ -203,6 +204,7 @@ static int status_handler(request_rec *r)
char *stat_buffer; char *stat_buffer;
pid_t *pid_buffer, worker_pid; pid_t *pid_buffer, worker_pid;
int *thread_idle_buffer = NULL; int *thread_idle_buffer = NULL;
@ -18,7 +26,7 @@
int *thread_busy_buffer = NULL; int *thread_busy_buffer = NULL;
clock_t tu, ts, tcu, tcs; clock_t tu, ts, tcu, tcs;
clock_t gu, gs, gcu, gcs; clock_t gu, gs, gcu, gcs;
@@ -231,7 +233,8 @@ @@ -231,7 +233,8 @@ static int status_handler(request_rec *r)
#endif #endif
#endif #endif
@ -28,7 +36,7 @@
busy = 0; busy = 0;
count = 0; count = 0;
bcount = 0; bcount = 0;
@@ -250,6 +253,7 @@ @@ -250,6 +253,7 @@ static int status_handler(request_rec *r)
stat_buffer = apr_palloc(r->pool, server_limit * thread_limit * sizeof(char)); stat_buffer = apr_palloc(r->pool, server_limit * thread_limit * sizeof(char));
if (is_async) { if (is_async) {
thread_idle_buffer = apr_palloc(r->pool, server_limit * sizeof(int)); thread_idle_buffer = apr_palloc(r->pool, server_limit * sizeof(int));
@ -36,7 +44,7 @@
thread_busy_buffer = apr_palloc(r->pool, server_limit * sizeof(int)); thread_busy_buffer = apr_palloc(r->pool, server_limit * sizeof(int));
} }
@@ -318,6 +322,7 @@ @@ -318,6 +322,7 @@ static int status_handler(request_rec *r)
ps_record = ap_get_scoreboard_process(i); ps_record = ap_get_scoreboard_process(i);
if (is_async) { if (is_async) {
thread_idle_buffer[i] = 0; thread_idle_buffer[i] = 0;
@ -44,7 +52,7 @@
thread_busy_buffer[i] = 0; thread_busy_buffer[i] = 0;
} }
for (j = 0; j < thread_limit; ++j) { for (j = 0; j < thread_limit; ++j) {
@@ -336,18 +341,20 @@ @@ -336,18 +341,20 @@ static int status_handler(request_rec *r)
&& ps_record->pid) { && ps_record->pid) {
if (res == SERVER_READY) { if (res == SERVER_READY) {
if (ps_record->generation == mpm_generation) if (ps_record->generation == mpm_generation)
@ -61,9 +69,9 @@
- if (res == SERVER_GRACEFUL) - if (res == SERVER_GRACEFUL)
- thread_idle_buffer[i]++; - thread_idle_buffer[i]++;
- else - else
+ if (res == SERVER_GRACEFUL) + if (res == SERVER_GRACEFUL) {
+ graceful++; + graceful++;
+ if (is_async) { + if (is_async)
+ thread_graceful_buffer[i]++; + thread_graceful_buffer[i]++;
+ } else { + } else {
+ busy++; + busy++;
@ -71,7 +79,7 @@
thread_busy_buffer[i]++; thread_busy_buffer[i]++;
} }
} }
@@ -548,10 +555,10 @@ @@ -548,10 +555,10 @@ static int status_handler(request_rec *r)
} /* ap_extended_status */ } /* ap_extended_status */
if (!short_report) if (!short_report)
@ -85,7 +93,7 @@
if (!short_report) if (!short_report)
ap_rputs("</dl>", r); ap_rputs("</dl>", r);
@@ -559,11 +566,6 @@ @@ -559,11 +566,6 @@ static int status_handler(request_rec *r)
if (is_async) { if (is_async) {
int write_completion = 0, lingering_close = 0, keep_alive = 0, int write_completion = 0, lingering_close = 0, keep_alive = 0,
connections = 0, stopping = 0, procs = 0; connections = 0, stopping = 0, procs = 0;
@ -97,7 +105,7 @@
if (!short_report) if (!short_report)
ap_rputs("\n\n<table rules=\"all\" cellpadding=\"1%\">\n" ap_rputs("\n\n<table rules=\"all\" cellpadding=\"1%\">\n"
"<tr><th rowspan=\"2\">Slot</th>" "<tr><th rowspan=\"2\">Slot</th>"
@@ -573,7 +575,7 @@ @@ -573,7 +575,7 @@ static int status_handler(request_rec *r)
"<th colspan=\"2\">Threads</th>" "<th colspan=\"2\">Threads</th>"
"<th colspan=\"3\">Async connections</th></tr>\n" "<th colspan=\"3\">Async connections</th></tr>\n"
"<tr><th>total</th><th>accepting</th>" "<tr><th>total</th><th>accepting</th>"
@ -106,7 +114,7 @@
"<th>writing</th><th>keep-alive</th><th>closing</th></tr>\n", r); "<th>writing</th><th>keep-alive</th><th>closing</th></tr>\n", r);
for (i = 0; i < server_limit; ++i) { for (i = 0; i < server_limit; ++i) {
ps_record = ap_get_scoreboard_process(i); ps_record = ap_get_scoreboard_process(i);
@@ -582,8 +584,6 @@ @@ -582,8 +584,6 @@ static int status_handler(request_rec *r)
write_completion += ps_record->write_completion; write_completion += ps_record->write_completion;
keep_alive += ps_record->keep_alive; keep_alive += ps_record->keep_alive;
lingering_close += ps_record->lingering_close; lingering_close += ps_record->lingering_close;
@ -115,7 +123,7 @@
procs++; procs++;
if (ps_record->quiescing) { if (ps_record->quiescing) {
stopping++; stopping++;
@@ -599,7 +599,7 @@ @@ -599,7 +599,7 @@ static int status_handler(request_rec *r)
ap_rprintf(r, "<tr><td>%u</td><td>%" APR_PID_T_FMT "</td>" ap_rprintf(r, "<tr><td>%u</td><td>%" APR_PID_T_FMT "</td>"
"<td>%s%s</td>" "<td>%s%s</td>"
"<td>%u</td><td>%s</td>" "<td>%u</td><td>%s</td>"
@ -124,7 +132,7 @@
"<td>%u</td><td>%u</td><td>%u</td>" "<td>%u</td><td>%u</td><td>%u</td>"
"</tr>\n", "</tr>\n",
i, ps_record->pid, i, ps_record->pid,
@@ -607,6 +607,7 @@ @@ -607,6 +607,7 @@ static int status_handler(request_rec *r)
ps_record->connections, ps_record->connections,
ps_record->not_accepting ? "no" : "yes", ps_record->not_accepting ? "no" : "yes",
thread_busy_buffer[i], thread_busy_buffer[i],
@ -132,7 +140,7 @@
thread_idle_buffer[i], thread_idle_buffer[i],
ps_record->write_completion, ps_record->write_completion,
ps_record->keep_alive, ps_record->keep_alive,
@@ -618,25 +619,22 @@ @@ -618,25 +619,22 @@ static int status_handler(request_rec *r)
ap_rprintf(r, "<tr><td>Sum</td>" ap_rprintf(r, "<tr><td>Sum</td>"
"<td>%d</td><td>%d</td>" "<td>%d</td><td>%d</td>"
"<td>%d</td><td>&nbsp;</td>" "<td>%d</td><td>&nbsp;</td>"

View File

@ -13,7 +13,7 @@
Summary: Apache HTTP Server Summary: Apache HTTP Server
Name: httpd Name: httpd
Version: 2.4.37 Version: 2.4.37
Release: 60%{?dist} Release: 61%{?dist}
URL: https://httpd.apache.org/ URL: https://httpd.apache.org/
Source0: https://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2 Source0: https://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2
Source2: httpd.logrotate Source2: httpd.logrotate
@ -980,6 +980,10 @@ rm -rf $RPM_BUILD_ROOT
%{_rpmconfigdir}/macros.d/macros.httpd %{_rpmconfigdir}/macros.d/macros.httpd
%changelog %changelog
* Thu Jul 20 2023 Tomas Korbar <tkorbar@redhat.com> - 2.4.37-61
- Fix issue found by covscan
- Related: #2159603
* Mon Jul 17 2023 Tomas Korbar <tkorbar@redhat.com> - 2.4.37-60 * Mon Jul 17 2023 Tomas Korbar <tkorbar@redhat.com> - 2.4.37-60
- Another rebuild because of mistake in workflow - Another rebuild because of mistake in workflow
- Related: #2159603 - Related: #2159603