Skip to content

Commit 82c5570

Browse files
committed
Test zend_mark_function_parameter_as_sensitive in ext/zend_test
1 parent 7617fdc commit 82c5570

File tree

5 files changed

+47
-1
lines changed

5 files changed

+47
-1
lines changed

ext/zend_test/test.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,17 @@ static ZEND_FUNCTION(zend_test_parameter_with_attribute)
327327
RETURN_LONG(1);
328328
}
329329

330+
static ZEND_FUNCTION(zend_test_sensitive_parameter)
331+
{
332+
zend_string *parameter;
333+
334+
ZEND_PARSE_PARAMETERS_START(1, 1)
335+
Z_PARAM_STR(parameter)
336+
ZEND_PARSE_PARAMETERS_END();
337+
338+
zend_throw_error(NULL, "Dummy");
339+
}
340+
330341
static zend_object *zend_test_class_new(zend_class_entry *class_type)
331342
{
332343
zend_object *obj = zend_objects_new(class_type);
@@ -600,6 +611,8 @@ PHP_MINIT_FUNCTION(zend_test)
600611
zend_test_observer_init(INIT_FUNC_ARGS_PASSTHRU);
601612
zend_test_fiber_init();
602613

614+
zend_mark_function_parameter_as_sensitive(CG(function_table), "zend_test_sensitive_parameter", 0 /* $parameter */);
615+
603616
return SUCCESS;
604617
}
605618

ext/zend_test/test.stub.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ function zend_weakmap_dump(): array {}
109109
function zend_get_unit_enum(): ZendTestUnitEnum {}
110110

111111
function zend_test_parameter_with_attribute(string $parameter): int {}
112+
113+
function zend_test_sensitive_parameter(string $parameter): void {}
112114
}
113115

114116
namespace ZendTestNS {

ext/zend_test/test_arginfo.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: bf10c37919483ac04bc1f788ac6e59b5edab295e */
2+
* Stub hash: e88157c8f56b0ef8466f7bb56cb0965bd00e0490 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_array_return, 0, 0, IS_ARRAY, 0)
55
ZEND_END_ARG_INFO()
@@ -75,6 +75,10 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_parameter_with_attribu
7575
ZEND_ARG_TYPE_INFO(0, parameter, IS_STRING, 0)
7676
ZEND_END_ARG_INFO()
7777

78+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_sensitive_parameter, 0, 1, IS_VOID, 0)
79+
ZEND_ARG_TYPE_INFO(0, parameter, IS_STRING, 0)
80+
ZEND_END_ARG_INFO()
81+
7882
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ZendTestNS2_ZendSubNS_namespaced_func, 0, 0, _IS_BOOL, 0)
7983
ZEND_END_ARG_INFO()
8084

@@ -131,6 +135,7 @@ static ZEND_FUNCTION(zend_weakmap_remove);
131135
static ZEND_FUNCTION(zend_weakmap_dump);
132136
static ZEND_FUNCTION(zend_get_unit_enum);
133137
static ZEND_FUNCTION(zend_test_parameter_with_attribute);
138+
static ZEND_FUNCTION(zend_test_sensitive_parameter);
134139
static ZEND_FUNCTION(namespaced_func);
135140
static ZEND_METHOD(_ZendTestClass, is_object);
136141
static ZEND_METHOD(_ZendTestClass, __toString);
@@ -167,6 +172,7 @@ static const zend_function_entry ext_functions[] = {
167172
ZEND_FE(zend_weakmap_dump, arginfo_zend_weakmap_dump)
168173
ZEND_FE(zend_get_unit_enum, arginfo_zend_get_unit_enum)
169174
ZEND_FE(zend_test_parameter_with_attribute, arginfo_zend_test_parameter_with_attribute)
175+
ZEND_FE(zend_test_sensitive_parameter, arginfo_zend_test_sensitive_parameter)
170176
ZEND_NS_FE("ZendTestNS2\\ZendSubNS", namespaced_func, arginfo_ZendTestNS2_ZendSubNS_namespaced_func)
171177
ZEND_FE_END
172178
};
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
--TEST--
2+
Test that zend_mark_function_parameter_as_sensitive works.
3+
--FILE--
4+
<?php
5+
zend_test_sensitive_parameter("foo");
6+
?>
7+
--EXPECTF--
8+
Fatal error: Uncaught Error: Dummy in %ssensitive_parameter.php:2
9+
Stack trace:
10+
#0 %ssensitive_parameter.php(2): zend_test_sensitive_parameter(Object(SensitiveParameterValue))
11+
#1 {main}
12+
thrown in %ssensitive_parameter.php on line 2
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
--TEST--
2+
Test that zend_mark_function_parameter_as_sensitive works with disable_functions.
3+
--INI--
4+
disable_functions=zend_test_sensitive_parameter
5+
--FILE--
6+
<?php
7+
zend_test_sensitive_parameter("foo");
8+
?>
9+
--EXPECTF--
10+
Fatal error: Uncaught Error: Call to undefined function zend_test_sensitive_parameter() in %ssensitive_parameter_disable_functions.php:2
11+
Stack trace:
12+
#0 {main}
13+
thrown in %ssensitive_parameter_disable_functions.php on line 2

0 commit comments

Comments
 (0)