fix accidental corrdump
zjd
zjd5536 at 163.com
Wed Sep 28 02:56:15 UTC 2022
my module is such:
The pool is created with ngx_create_pool in module_init_process; I get momery from the pool in the start of each request, and then use ngx_reset_pool in the end of each request.
The ngx_reset_pool take pool->large each alloc pointer return to pool, and each alloc pointer is wild pointer.
And When another get momery from the pool in next request or next next request..., I maybe get wild pointer address and access inaccessible addresses, and then coredump.
maybe the describe is simple in last mail.
At 2022-09-28 04:51:55, "Maxim Dounin" <mdounin at mdounin.ru> wrote:
>Hello!
>
>On Tue, Sep 27, 2022 at 03:25:18PM +0800, zjd wrote:
>
>> # HG changeset patch
>> # User Zhang Jinde <zjd5536 at 163.com>
>> # Date 1664261587 -28800
>> # Tue Sep 27 14:53:07 2022 +0800
>> # Node ID 226a75a3703db612ed13d4357ac1b71faef6974a
>> # Parent ba5cf8f73a2d0a3615565bf9545f3d65216a0530
>> Core: fix ngx_reset_pool wild pointer's coredump
>>
>> When frequently use ngx_reset_pool and use memory to the same pool in a worker, it hanpens to accidental corrdump sometimes.
>>
>> diff -r ba5cf8f73a2d -r 226a75a3703d src/core/ngx_palloc.c
>> --- a/src/core/ngx_palloc.c Thu Sep 08 13:53:49 2022 +0400
>> +++ b/src/core/ngx_palloc.c Tue Sep 27 14:53:07 2022 +0800
>> @@ -105,6 +105,7 @@
>> for (l = pool->large; l; l = l->next) {
>> if (l->alloc) {
>> ngx_free(l->alloc);
>> + l->alloc = NULL;
>> }
>> }
>
>Could you please clarify what you are trying to fix here?
>
>From the description it looks like your module tries to use memory
>already freed by ngx_reset_pool(). If that's the case, the
>coredumps you observing aren't accidental, but rather an expected
>result of the use-after-free bug in your module.
>
>--
>Maxim Dounin
>http://mdounin.ru/
>_______________________________________________
>nginx mailing list -- nginx at nginx.org
>To unsubscribe send an email to nginx-leave at nginx.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20220928/69844670/attachment.htm>
More information about the nginx
mailing list