|
Jim Gallacher
jpg at jgassociates.ca
Fri Dec 9 12:10:33 EST 2005
Martin Devera wrote:
>>> code:
>>> from mod_python import apache
>>> import os
>>> import inspect
>>>
>>> def handler(req):
>>> req.content_type = "text/plain"
>>> m = inspect.getmembers(req);
>>> req.write("PID "+str(os.getpid())+" "+str(1))
>>>
>>> return apache.OK
>>>
>>> getmembers line coredumps apache child.
>>
>>
>> Is even easier than that. Simply access 'req.boundary' and it crashes.
>>
>> The code contains:
>>
>> {"boundary", (getter)getreq_recmbr, NULL,
>> "Multipart/byteranges boundary", "boundary"},
>>
>> in the request_getsets[] array, but there is no definition of
>> 'boundary' in
>> the request_rec_mbrs[] array. As a consequence, when you access it, it
>> will crash.
>>
>> The 'boundary' line therefore needs to be deleted from the source as it
>> appears to serve no purpose.
>>
>> I'll log a bug report.
>
>
> Hello Graham,
>
> I fixed the boundary problem temporarily and found another. And it
> seems to be harder (I'm looking at it in GDB for 3 hours now):
>
> def handler(req):
> req.content_type = "text/plain"
> req.write("EE\n")
> a = getattr(req,"allowed_methods");
> return apache.OK
>
> Coredumps in getreq_rec_ml...
I stuffed some ap_log_rerror statements into getreq_rec_ml and every
thing is fine up to "return tuple_from_method_list(ml);".
tuple_from_method_list is defined in src/util.c. I'm out of time right
now but I'll poke at it later and see what I can learn.
Jim
|