From 74919b0c64b58e5975c9c18abd4c6006e288c964 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 21 Jun 2022 17:57:41 +0200 Subject: [PATCH 1/3] mark password as a sensitive param for 8.2 --- php_memcached.c | 11 +++++++---- php_memcached.stub.php | 4 +++- php_memcached_arginfo.h | 34 +++++++++++++++++++++++++++++----- php_memcached_legacy_arginfo.h | 34 +++++++++++++++++++++++++++++----- 4 files changed, 68 insertions(+), 15 deletions(-) diff --git a/php_memcached.c b/php_memcached.c index 73deaf64..86c76e2b 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -3895,9 +3895,14 @@ PHP_METHOD(MemcachedServer, on) #endif +#if PHP_VERSION_ID < 80200 +#define zend_mark_function_parameter_as_sensitive(a,b,c) +#endif + #if PHP_VERSION_ID < 80000 #include "php_memcached_legacy_arginfo.h" #else +#include "zend_attributes.h" #include "php_memcached_arginfo.h" #endif @@ -4254,8 +4259,7 @@ PHP_MINIT_FUNCTION(memcached) le_memc = zend_register_list_destructors_ex(NULL, php_memc_dtor, "Memcached persistent connection", module_number); - INIT_CLASS_ENTRY(ce, "Memcached", class_Memcached_methods); - memcached_ce = zend_register_internal_class(&ce); + memcached_ce = register_class_Memcached(); memcached_ce->create_object = php_memc_object_new; #ifdef HAVE_MEMCACHED_PROTOCOL @@ -4264,8 +4268,7 @@ PHP_MINIT_FUNCTION(memcached) memcached_server_object_handlers.clone_obj = NULL; memcached_server_object_handlers.free_obj = php_memc_server_free_storage; - INIT_CLASS_ENTRY(ce, "MemcachedServer", class_MemcachedServer_methods); - memcached_server_ce = zend_register_internal_class(&ce); + memcached_server_ce = register_class_MemcachedServer(); memcached_server_ce->create_object = php_memc_server_new; #endif diff --git a/php_memcached.stub.php b/php_memcached.stub.php index 819186f4..dbfb340f 100644 --- a/php_memcached.stub.php +++ b/php_memcached.stub.php @@ -3,6 +3,7 @@ /** * @generate-function-entries * @generate-legacy-arginfo + * @generate-class-entries */ @@ -75,6 +76,7 @@ public function setOption(int $option, mixed $value): bool {} public function setOptions(array $options): bool {} public function setBucket(array $host_map, ?array $forward_map, int $replicas): bool {} #ifdef HAVE_MEMCACHED_SASL + /** @sensitive-param $password **/ public function setSaslAuthData(string $username, string $password): bool {} #endif @@ -86,7 +88,7 @@ public function isPristine(): bool {} public function checkKey(string $key): bool {} } -#ifdef HAVE_MEMCACHED_PROTOCOL +#if defined(HAVE_MEMCACHED_PROTOCOL) class MemcachedServer { public function run(string $address): bool {} diff --git a/php_memcached_arginfo.h b/php_memcached_arginfo.h index 3373624e..ef8dddab 100644 --- a/php_memcached_arginfo.h +++ b/php_memcached_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 3f4694d4e1f3d1647a832acd8539b056b2ab5e7a */ + * Stub hash: cad7892c60b5b898fa5e20b4b0b0ca62149c1334 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Memcached___construct, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, persistent_id, IS_STRING, 1, "null") @@ -406,12 +406,36 @@ static const zend_function_entry class_Memcached_methods[] = { }; -static const zend_function_entry class_MemcachedServer_methods[] = { #if defined(HAVE_MEMCACHED_PROTOCOL) +static const zend_function_entry class_MemcachedServer_methods[] = { ZEND_ME(MemcachedServer, run, arginfo_class_MemcachedServer_run, ZEND_ACC_PUBLIC) -#endif -#if defined(HAVE_MEMCACHED_PROTOCOL) ZEND_ME(MemcachedServer, on, arginfo_class_MemcachedServer_on, ZEND_ACC_PUBLIC) -#endif ZEND_FE_END }; +#endif + +static zend_class_entry *register_class_Memcached(void) +{ + zend_class_entry ce, *class_entry; + + INIT_CLASS_ENTRY(ce, "Memcached", class_Memcached_methods); + class_entry = zend_register_internal_class_ex(&ce, NULL); + +#if defined(HAVE_MEMCACHED_SASL) + zend_mark_function_parameter_as_sensitive(&class_entry->function_table, "setsaslauthdata", 1); +#endif + + return class_entry; +} + +#if defined(HAVE_MEMCACHED_PROTOCOL) +static zend_class_entry *register_class_MemcachedServer(void) +{ + zend_class_entry ce, *class_entry; + + INIT_CLASS_ENTRY(ce, "MemcachedServer", class_MemcachedServer_methods); + class_entry = zend_register_internal_class_ex(&ce, NULL); + + return class_entry; +} +#endif diff --git a/php_memcached_legacy_arginfo.h b/php_memcached_legacy_arginfo.h index ad6d6562..2db6f936 100644 --- a/php_memcached_legacy_arginfo.h +++ b/php_memcached_legacy_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 3f4694d4e1f3d1647a832acd8539b056b2ab5e7a */ + * Stub hash: cad7892c60b5b898fa5e20b4b0b0ca62149c1334 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Memcached___construct, 0, 0, 0) ZEND_ARG_INFO(0, persistent_id) @@ -402,12 +402,36 @@ static const zend_function_entry class_Memcached_methods[] = { }; -static const zend_function_entry class_MemcachedServer_methods[] = { #if defined(HAVE_MEMCACHED_PROTOCOL) +static const zend_function_entry class_MemcachedServer_methods[] = { ZEND_ME(MemcachedServer, run, arginfo_class_MemcachedServer_run, ZEND_ACC_PUBLIC) -#endif -#if defined(HAVE_MEMCACHED_PROTOCOL) ZEND_ME(MemcachedServer, on, arginfo_class_MemcachedServer_on, ZEND_ACC_PUBLIC) -#endif ZEND_FE_END }; +#endif + +static zend_class_entry *register_class_Memcached(void) +{ + zend_class_entry ce, *class_entry; + + INIT_CLASS_ENTRY(ce, "Memcached", class_Memcached_methods); + class_entry = zend_register_internal_class_ex(&ce, NULL); + +#if defined(HAVE_MEMCACHED_SASL) + zend_mark_function_parameter_as_sensitive(&class_entry->function_table, "setsaslauthdata", 1); +#endif + + return class_entry; +} + +#if defined(HAVE_MEMCACHED_PROTOCOL) +static zend_class_entry *register_class_MemcachedServer(void) +{ + zend_class_entry ce, *class_entry; + + INIT_CLASS_ENTRY(ce, "MemcachedServer", class_MemcachedServer_methods); + class_entry = zend_register_internal_class_ex(&ce, NULL); + + return class_entry; +} +#endif From b2ff23feba96c76c274ad4e56156ff5134d3b478 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Mon, 18 Jul 2022 13:52:08 +0200 Subject: [PATCH 2/3] regenerate arginfo for change in upcomong 8.2.0beta1 --- php_memcached.c | 4 ---- php_memcached.stub.php | 4 +--- php_memcached_arginfo.h | 7 +++++-- php_memcached_legacy_arginfo.h | 6 +----- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/php_memcached.c b/php_memcached.c index 86c76e2b..7ccc9b58 100644 --- a/php_memcached.c +++ b/php_memcached.c @@ -3895,10 +3895,6 @@ PHP_METHOD(MemcachedServer, on) #endif -#if PHP_VERSION_ID < 80200 -#define zend_mark_function_parameter_as_sensitive(a,b,c) -#endif - #if PHP_VERSION_ID < 80000 #include "php_memcached_legacy_arginfo.h" #else diff --git a/php_memcached.stub.php b/php_memcached.stub.php index dbfb340f..a44b1801 100644 --- a/php_memcached.stub.php +++ b/php_memcached.stub.php @@ -6,7 +6,6 @@ * @generate-class-entries */ - class Memcached { public function __construct(?string $persistent_id=null, ?callable $callback=null, ?string $connection_str=null) {} @@ -76,8 +75,7 @@ public function setOption(int $option, mixed $value): bool {} public function setOptions(array $options): bool {} public function setBucket(array $host_map, ?array $forward_map, int $replicas): bool {} #ifdef HAVE_MEMCACHED_SASL - /** @sensitive-param $password **/ - public function setSaslAuthData(string $username, string $password): bool {} + public function setSaslAuthData(string $username, #[\SensitiveParameter] string $password): bool {} #endif #ifdef HAVE_MEMCACHED_SET_ENCODING_KEY diff --git a/php_memcached_arginfo.h b/php_memcached_arginfo.h index ef8dddab..3108e39f 100644 --- a/php_memcached_arginfo.h +++ b/php_memcached_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: cad7892c60b5b898fa5e20b4b0b0ca62149c1334 */ + * Stub hash: 0964c9bfee903e59b63e5a16bd8b6611d827b151 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Memcached___construct, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, persistent_id, IS_STRING, 1, "null") @@ -420,9 +420,12 @@ static zend_class_entry *register_class_Memcached(void) INIT_CLASS_ENTRY(ce, "Memcached", class_Memcached_methods); class_entry = zend_register_internal_class_ex(&ce, NULL); +#if (PHP_VERSION_ID >= 80200) #if defined(HAVE_MEMCACHED_SASL) - zend_mark_function_parameter_as_sensitive(&class_entry->function_table, "setsaslauthdata", 1); + + zend_add_parameter_attribute(zend_hash_str_find_ptr(&class_entry->function_table, "setsaslauthdata", sizeof("setsaslauthdata") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0); +#endif #endif return class_entry; diff --git a/php_memcached_legacy_arginfo.h b/php_memcached_legacy_arginfo.h index 2db6f936..6bb8e2d6 100644 --- a/php_memcached_legacy_arginfo.h +++ b/php_memcached_legacy_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: cad7892c60b5b898fa5e20b4b0b0ca62149c1334 */ + * Stub hash: 0964c9bfee903e59b63e5a16bd8b6611d827b151 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Memcached___construct, 0, 0, 0) ZEND_ARG_INFO(0, persistent_id) @@ -417,10 +417,6 @@ static zend_class_entry *register_class_Memcached(void) INIT_CLASS_ENTRY(ce, "Memcached", class_Memcached_methods); class_entry = zend_register_internal_class_ex(&ce, NULL); -#if defined(HAVE_MEMCACHED_SASL) - zend_mark_function_parameter_as_sensitive(&class_entry->function_table, "setsaslauthdata", 1); -#endif - return class_entry; } From eddc27ffeb13898ede14322712a0da93bdbed17a Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 28 Jul 2022 09:20:23 +0200 Subject: [PATCH 3/3] ci