William A. Rowe, Jr. wrote:
> [email protected] wrote:
>> Author: rpluem
>> Date: Sat Jan  3 01:52:12 2009
>> New Revision: 730949
>>
>> URL: http://svn.apache.org/viewvc?rev=730949&view=rev
>> Log:
>> * Handle the case where conf->accf_map is NULL gracefully instead of 
>> segfaulting
>>
>> Modified:
>>     httpd/httpd/trunk/server/listen.c
>>
>> Modified: httpd/httpd/trunk/server/listen.c
>> URL: 
>> http://svn.apache.org/viewvc/httpd/httpd/trunk/server/listen.c?rev=730949&r1=730948&r2=730949&view=diff
>> ==============================================================================
>> --- httpd/httpd/trunk/server/listen.c (original)
>> +++ httpd/httpd/trunk/server/listen.c Sat Jan  3 01:52:12 2009
>> @@ -183,7 +183,7 @@
>>      const char* accf;
>>      core_server_config *conf = ap_get_module_config(s->module_config,
>>                                                      &core_module);
>> -    if (!proto) {
>> +    if (!proto || !conf->accf_map) {
> 
> Ok, problem there.  AIUI this should not happen.
> 
> accf_map is created for the global-hosts (!is_virtual).  All virtual hosts
> should have run the merge, which cpy's the global before fixing up specific
> fields in the merge.
> 
> I'd prefer we revert and work backwards to where the bug really is.

I'm still confused, in merge_core_server_configs, we do;

conf = (core_server_config *)apr_pmemdup(p, virt, sizeof(core_server_config));

and otherwise didn't touch the accf_map pointer.  How do you have an orphan
virtual server config which was never merged to the core server config?!?

Are you saying we actually iterate UNMERGED server confs in places?  Now
that is horridly wrong behavior.


Reply via email to