Hi!
I developed an extended version of the auth_ldap module and use it currently
in Apache 1.3. Now I want to port this to Apache 2.
I got everything ported except the follwing 2 problems:
1) It seems the functions ap_mm_malloc, ap_mm_strdup and ap_mm_free from
"ap_mm.h" aren't there anymore? How do I port them to Apache 2?
2) When I include the module in Apache 2 (2.0.52) and request a Directory
per Webbrowser that is auth_ldap-protected, I get a segfault in the
authenticate user function because this line returns NULL :
auth_ldap_config_rec *sec =
(auth_ldap_config_rec *)ap_get_module_config(r->per_dir_config,
&ep_auth_module);
This line always gives me a NULL-pointer, but it did not in the 1.3 version.
I investigated a bit and found, that the function
ap_get_module_config just does a vector lookup:
r->per_dir_config[ep_auth_module.module_index]
I echoed the array r->per_dir_config to stderr and I got the following
output:
ep_auth_module.module_index = 21
(although it is the ONY module I load in my configuration; it gets
initialized using STANDARD_20MODULE_STUFF with the value of -1)
Now the list of the pointers in r->per_dir_config :
ptr[0]=0x816e720
ptr[1]=(nil)
ptr[2]=(nil)
ptr[3]=(nil)
ptr[4]=(nil)
ptr[5]=(nil)
ptr[6]=0x809e2de
ptr[7]=(nil)
ptr[8]=(nil)
ptr[9]=(nil)
ptr[10]=(nil)
ptr[11]=(nil)
ptr[12]=(nil)
ptr[13]=(nil)
ptr[14]=(nil)
ptr[15]=(nil)
ptr[16]=(nil)
ptr[17]=(nil)
ptr[18]=(nil)
ptr[19]=(nil)
ptr[20]=(nil)
ptr[21]=(nil)
ptr[22]=(nil)
ptr[23]=(nil)
ptr[24]=(nil)
ptr[25]=(nil)
ptr[26]=(nil)
As you can see, index 21 is NULL.
I even tried to force the not-NULL indices by writing:
auth_ldap_config_rec *sec = r->per_dir_config[6];
and
auth_ldap_config_rec *sec = r->per_dir_config[0];
But this gave me a segfault at another location ...
I don't know whether I'm doing something wrong in the Module source, or in
the way I build it...
I compile it using:
CFLAGS=-c -g -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -DEAPI_MM
-fPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHARD_SERVER_LIMIT=2048
-DDYNAMIC_MODULE_LIMIT=128 -DSSL_EXPERIMENTAL_PERDIRCA_IGNORE
-DSSL_EXPERIMENTAL_PROXY_IGNORE -DLINUX=22 -DMOD_SSL=208115 -DEAPI
-DWITH_SHARED_LDAP_CACHE -DWITH_OPENLDAP -fPIC -Wall -DSHARED_MODULE
LIB=-lmm -lldap -lcrypt -lpq
And Linking is done as shared object: $(LD) $(LIB) -o $@ -shared $^
Does somebody have a clue what's wrong here? If you need more info, just let
me know.
Thanks in advance!
Stefan
--
Stefan Gaffga, Systementwickler _____ _____
EP:ElectronicPartner GmbH / ___/ / _ / __
Mündelheimer Weg 40, 40472 Düsseldorf / __/ / ___/ /_/
Tel:0211/4156-223 Fax:0211/4156-308 /____/ /_/ /_/