Skip to content

Commit 0d667f4

Browse files
committed
Solve security bug related to metacallfs.
1 parent 2e7f6d6 commit 0d667f4

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

source/cli/metacallcli/CMakeLists.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,33 @@ if(OPTION_BUILD_LOADERS AND OPTION_BUILD_LOADERS_NODE AND OPTION_BUILD_SCRIPTS A
239239
)
240240
endif()
241241

242+
add_test(NAME ${target}-node-null
243+
COMMAND ${TEST_COMMAND} "echo 'load node cli-test-null-undefined.js\ninspect\ncall test_null_and_undefined(null)\nexit' | $<TARGET_FILE:${target}> | ${GREP_COMMAND} \"Hello 342521512461246!\""
244+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
245+
)
246+
test_environment_variables(${target}-node-null
247+
""
248+
${TESTS_ENVIRONMENT_VARIABLES}
249+
)
250+
251+
add_test(NAME ${target}-node-null-empty
252+
COMMAND ${TEST_COMMAND} "echo 'load node cli-test-null-undefined.js\ninspect\ncall test_null_and_undefined()\nexit' | $<TARGET_FILE:${target}> | ${GREP_COMMAND} \"Hello 342521512461246!\""
253+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
254+
)
255+
test_environment_variables(${target}-node-null-empty
256+
""
257+
${TESTS_ENVIRONMENT_VARIABLES}
258+
)
259+
260+
add_test(NAME ${target}-node-null-undefined
261+
COMMAND ${TEST_COMMAND} "echo 'load node cli-test-null-undefined.js\ninspect\ncall test_null_and_undefined(undefined)\nexit' | $<TARGET_FILE:${target}> | ${GREP_COMMAND} \"(null)\""
262+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
263+
)
264+
test_environment_variables(${target}-node-null-undefined
265+
""
266+
${TESTS_ENVIRONMENT_VARIABLES}
267+
)
268+
242269
if(OPTION_BUILD_PORTS AND OPTION_BUILD_PORTS_PY)
243270
add_test(NAME ${target}-py-port
244271
COMMAND ${TEST_COMMAND} "echo 'load py cli-test.py\ninspect\ncall test()\nexit' | $<TARGET_FILE:${target}> | ${GREP_COMMAND} \"1234\""
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function test_null_and_undefined(name) {
2+
if (name) {
3+
return `Hello, ${name}`;
4+
} else {
5+
return 'Hello 342521512461246!'
6+
}
7+
}
8+
9+
module.exports = test_null_and_undefined;

source/metacall/source/metacall.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -870,7 +870,7 @@ void * metacallfs(void * func, const char * buffer, size_t size, void * allocato
870870
args[iterator] = v_array[iterator];
871871
}
872872

873-
ret = metacallfv(f, args);
873+
ret = metacallfv_s(f, args, args_count);
874874

875875
if (ret != NULL)
876876
{

0 commit comments

Comments
 (0)