summaryrefslogtreecommitdiff
path: root/ext/sysvshm/sysvshm.c
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2000-10-30 17:18:39 +0000
committerStanislav Malyshev <stas@php.net>2000-10-30 17:18:39 +0000
commitfad7092ff8ce3c2e4ef2a84a5dd5e5945ab12777 (patch)
tree81e0d0caf1067a037db6844d335856e58eb1379d /ext/sysvshm/sysvshm.c
parentc31faf0bd993d7be5de8599c56e91e8b5bc165bd (diff)
downloadphp-git-fad7092ff8ce3c2e4ef2a84a5dd5e5945ab12777.tar.gz
Update to use reference-serializer too
Diffstat (limited to 'ext/sysvshm/sysvshm.c')
-rw-r--r--ext/sysvshm/sysvshm.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/ext/sysvshm/sysvshm.c b/ext/sysvshm/sysvshm.c
index 6986a29295..c28082760e 100644
--- a/ext/sysvshm/sysvshm.c
+++ b/ext/sysvshm/sysvshm.c
@@ -212,6 +212,7 @@ PHP_FUNCTION(shm_put_var)
int type;
pval shm_var;
int ret;
+ php_serialize_data_t var_hash;
if(ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg_id, &arg_key,&arg_var) == FAILURE) {
WRONG_PARAM_COUNT;
@@ -233,7 +234,9 @@ PHP_FUNCTION(shm_put_var)
shm_var.type=IS_STRING;
shm_var.value.str.len=0;
shm_var.value.str.val=0;
- php_var_serialize(&shm_var,arg_var,NULL);
+ PHP_VAR_SERIALIZE_INIT(var_hash);
+ php_var_serialize(&shm_var,arg_var,&var_hash);
+ PHP_VAR_SERIALIZE_DESTROY(var_hash);
/* insert serialized variable into shared memory */
ret=php_put_shm_data(shm_list_ptr->ptr,key,shm_var.value.str.val,shm_var.value.str.len);
@@ -260,6 +263,7 @@ PHP_FUNCTION(shm_get_var)
char *shm_data;
long shm_varpos;
sysvshm_chunk *shm_var;
+ php_serialize_data_t var_hash;
if(ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg_id, &arg_key) == FAILURE) {
WRONG_PARAM_COUNT;
@@ -287,10 +291,13 @@ PHP_FUNCTION(shm_get_var)
shm_var=(sysvshm_chunk*)((char*)shm_list_ptr->ptr+shm_varpos);
shm_data=&shm_var->mem;
- if(php_var_unserialize(&return_value, (const char **) &shm_data, shm_data+shm_var->length)!=1) {
+ PHP_VAR_UNSERIALIZE_INIT(var_hash);
+ if(php_var_unserialize(&return_value, (const char **) &shm_data, shm_data+shm_var->length,&var_hash)!=1) {
+ PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
php_error(E_WARNING, "variable data in shared memory is corruped");
RETURN_FALSE;
}
+ PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
}
/* }}} */