Create persistent interned string for password algos

These strings are returned to userland by password_algos(),
which violates thread-safety invariants. Create persistent
interned strings for them instead.
This commit is contained in:
Nikita Popov 2021-07-20 15:12:30 +02:00
parent 051ff33660
commit b0d4d6ebb4

View file

@ -38,12 +38,8 @@
static zend_array php_password_algos;
int php_password_algo_register(const char *ident, const php_password_algo *algo) {
zval zalgo;
ZVAL_PTR(&zalgo, (php_password_algo*)algo);
if (zend_hash_str_add(&php_password_algos, ident, strlen(ident), &zalgo)) {
return SUCCESS;
}
return FAILURE;
zend_string *key = zend_string_init_interned(ident, strlen(ident), 1);
return zend_hash_add_ptr(&php_password_algos, key, (void *) algo) ? SUCCESS : FAILURE;
}
void php_password_algo_unregister(const char *ident) {