Hi Ben,
thanks for your answer.
On 06.10.2010 01:11, Ben Noordhuis wrote:
Hi Franz, welcome. Replies inline:
On Wed, Oct 6, 2010 at 00:49, Franz Schwartau fr...@electromail.org wrote:
How should the module react to a failed initialization of seed_rand() in
iphash_create_server_config() (line 90)? Returning NULL in
iphash_create_server_config() doesn't seem to help. I'd like to disable
the module somehow if the random generator could be initialized properly.
Add a 'initialized' flag to iphash_config_t and check its value in
log_ip_hash.
That said, if security is an issue - which I presume it is - you are
probably better off aborting.
I thought about something like this, too. The seeding in
iphash_create_server_config() could be rewritten to
if ((rv = seed_rand())) {
ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
Unable to generate random bytes: %pm, rv);
} else {
generate_salt(cf-salt, SALT_SIZE);
}
In log_ip_hash() (the function registered with log_pfn_register()) I
could check if cf-salt is non empty. So I could save a flag.
But how exactly can I abort? If NULL is returned from log_ip_hash() a
'-' is printed for the % directive from mod_log_iphash only.
No other module checks if the return value of apr_palloc() or
apr_pcalloc() is NULL. Does it mean memory allocation via apr_palloc()
will never fail and memory size is indefinitely? ;-)
Yep. And if memory turns out to be finite after all, the APR will tear
down the process.
Ah, ok, I see. Thanks for clarifying. I'm not familiar with APR, yet.
But not checking the return value is strange if you are used to plain
malloc(). :-)
Best regards
Franz