]> git.kaiwu.me - njs.git/commit
Fixed recursive async function calls.
authorDmitry Volyntsev <xeioex@nginx.com>
Fri, 21 Jan 2022 14:31:30 +0000 (14:31 +0000)
committerDmitry Volyntsev <xeioex@nginx.com>
Fri, 21 Jan 2022 14:31:30 +0000 (14:31 +0000)
commit6a07c2156a07ef307b6dcf3c2ca8571a5f1af7a6
treebbf5b95ff778f2319d6e78bbfe05b837eab19661
parent39e8fa1b7db1680654527f8fa0e9ee93b334ecba
Fixed recursive async function calls.

Previously, PromiseCapability record was stored (function->context)
directly in function object during a function invocation.  This is
not correct, because PromiseCapability record should be linked to
current execution context.  As a result, function->context is
overwritten with consecutive recursive calls which results in
use-after-free.

This closes #451 issue on Github.
src/njs_async.c
src/njs_function.c
src/njs_function.h
src/njs_value.h
src/njs_vm.c
src/njs_vmcode.c
src/njs_vmcode.h
test/js/async_recursive_last.t.js [new file with mode: 0644]
test/js/async_recursive_mid.t.js [new file with mode: 0644]