Skip to content

Commit 91e6f26

Browse files
authored
Add sanitity checks regarding num_args and arg_info (phpGH-16538)
`num_args > 0` implies that `arg_info != NULL`. We explicitly assert that during compilation and execution to make it easier for developers to not miss this[1]. [1] <php#16266>
1 parent c40e6be commit 91e6f26

File tree

2 files changed

+2
-0
lines changed

2 files changed

+2
-0
lines changed

Zend/zend_compile.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3709,6 +3709,7 @@ static uint32_t zend_get_arg_num(zend_function *fn, zend_string *arg_name) {
37093709
}
37103710
}
37113711
} else {
3712+
ZEND_ASSERT(fn->common.num_args == 0 || fn->internal_function.arg_info);
37123713
for (uint32_t i = 0; i < fn->common.num_args; i++) {
37133714
zend_internal_arg_info *arg_info = &fn->internal_function.arg_info[i];
37143715
size_t len = strlen(arg_info->name);

Zend/zend_execute.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5304,6 +5304,7 @@ static zend_always_inline uint32_t zend_get_arg_offset_by_name(
53045304
}
53055305
}
53065306
} else {
5307+
ZEND_ASSERT(num_args == 0 || fbc->internal_function.arg_info);
53075308
for (uint32_t i = 0; i < num_args; i++) {
53085309
zend_internal_arg_info *arg_info = &fbc->internal_function.arg_info[i];
53095310
size_t len = strlen(arg_info->name);

0 commit comments

Comments
 (0)