While I was preparing my questions in the below email (rebooting resulted in
error 5 too) - I found my own answer.
I found out that I was missing an include at the top of the file when I saw:
mod_certs.c:81:22: warning: assignment to 'char *' from 'int' makes pointer
from integer without a cast [-Wint-conversion]
81 | config->name = apr_pstrdup(parms->pool, v);
Which made no sense, then I remembered that C defaults to return type of int,
if it does not know the declaration. So I looked harder and found:
mod_certs.c:43:16: warning: implicit declaration of function 'apr_pstrdup'
[-Wimplicit-function-declaration]
43 | char* test=apr_pstrdup(parms->pool, arg);
| ^~~~~~~~~~~
Which was fixed by:
#include "apr_strings.h"
Going forward, I have -Wc,-Werror=implicit-function-declaration on apxs
-Jason
Was going to send below...
(my environment, Rocky 9 - httpd-devel-2.4.53-11.el9_2.5.x86_64)
Test case code fragment:
const char *process_directives(cmd_parms *parms, void *mconfig, const char *arg)
{
ap_log_error(APLOG_MARK, APLOG_INFO, 0, parms->server, "works");
if (arg) ap_log_error(APLOG_MARK, APLOG_INFO, 0, parms->server, "we see
this, arg is %s",arg);
char* test=apr_pstrdup(parms->pool, arg);
if (test)
{
ap_log_error(APLOG_MARK, APLOG_INFO, 0, parms->server, "test is not
null, we see this - segfault next");
ap_log_error(APLOG_MARK, APLOG_INFO, 0, parms->server, "test is: %s",
test);
}
ap_log_error(APLOG_MARK, APLOG_INFO, 0, parms->server, "we never get here");
Nov 12 10:48:02 localhost systemd[1]: Starting The Apache HTTP Server...
Nov 12 10:48:02 localhost httpd[45938]: [Sun Nov 12 10:48:02.206339 2023]
[:info] [pid 45938:tid 45938] works
Nov 12 10:48:02 localhost httpd[45938]: [Sun Nov 12 10:48:02.206584 2023]
[:info] [pid 45938:tid 45938] we see this, arg is header:Ssl-Client-Cert
Nov 12 10:48:02 localhost httpd[45938]: [Sun Nov 12 10:48:02.206608 2023]
[:info] [pid 45938:tid 45938] test is not null, we see this - segfault next
Nov 12 10:48:02 localhost kernel: httpd[45938]: segfault at 28e3cb48 ip
00007fbd5d8bce7d sp 00007ffe28b41ae8 error 4 in libc.so.6[7fbd5d828000+175000]
Nov 12 10:48:02 localhost kernel: Code: e1 c5 f8 77 c3 0f 1f 84 00 00 00 00 00
f3 0f 1e fa 89 f8 48 89 fa c5 f9 ef c0 25 ff 0f 00 00 3d e0 0f 00 00 0f 87 33
01 00 00 <c5> fd 74 0f c5 fd d7 c1 85 c0 74 57 f3 0f bc c0 c5 f8 77 c3 66 66
Nov 12 10:48:02 localhost systemd[1]: Started Process Core Dump (PID 45940/UID
0).
Nov 12 10:48:02 localhost systemd-coredump[45941]: Resource limits disable core
dumping for process 45938 (httpd).
Nov 12 10:48:02 localhost systemd-coredump[45941]: Process 45938 (httpd) of
user 0 dumped core.
Nov 12 10:48:02 localhost systemd[1]: httpd.service: Main process exited,
code=dumped, status=11/SEGV
Nov 12 10:48:02 localhost systemd[1]: httpd.service: Failed with result
'core-dump'.
Nov 12 10:48:02 localhost systemd[1]: Failed to start The Apache HTTP Server.
Nov 12 10:48:02 localhost systemd[1]: [email protected]:
Deactivated successfully.
Even checking the first character results in a seg fault:
ap_log_error(APLOG_MARK, APLOG_INFO, 0, parms->server, "*test is: %x",
test);
ap_log_error(APLOG_MARK, APLOG_INFO, 0, parms->server, "*pool is: %x",
parms->pool);
ap_log_error(APLOG_MARK, APLOG_INFO, 0, parms->server, "X is: %c",
'X');
char t=test[0];
ap_log_error(APLOG_MARK, APLOG_INFO, 0, parms->server, "we never get
here");
Nov 12 11:14:45 localhost httpd[2042]: [Sun Nov 12 11:14:45.226362 2023]
[:info] [pid 2042:tid 2042] *test is: c36efb58
Nov 12 11:14:45 localhost httpd[2042]: [Sun Nov 12 11:14:45.226378 2023]
[:info] [pid 2042:tid 2042] *pool is: c36143e8
Nov 12 11:14:45 localhost httpd[2042]: [Sun Nov 12 11:14:45.226391 2023]
[:info] [pid 2042:tid 2042] X is: X
Nov 12 11:14:45 localhost kernel: httpd[2042]: segfault at ffffffffc36efb58 ip
00007fba3c664356 sp 00007ffc0ee286f8 error 5 in mod_certs.so[7fba3c664000+1000]
Build commands:
/usr/lib64/apr-1/build/libtool --silent --mode=link gcc -Wl,-z,relro,-z,now
-o mod_certs.la -rpath /usr/lib64/httpd/modules -module -avoid-version
mod_certs.lo
(left off here on draft email ...)
Things I have read:
https://apr.apache.org/docs/apr/trunk/group__apr__strings.html#gabc79e99ff19abbd7cfd18308c5f85d47
https://nightlies.apache.org/httpd/trunk/doxygen/group__APACHE__CORE__LOG.html#ga83397d991e162cb611864767c1bc0c54
https://httpd.apache.org/docs/2.4/developer/modguide.html
--
Jason Pyeron | Architect
PD Inc | Certified SBA 8(a)
10 w 24th St | Certified SBA HUBZone
Baltimore, MD | CAGE Code: 1WVR6
.mil: [email protected]
.com: [email protected]
tel : 202-741-9397