[PHP-CVS] cvs: php-src /ext/sysvshm sysvshm.c
iliaa Tue Mar 17 23:22:05 2009 UTC Modified files: /php-src/ext/sysvshmsysvshm.c Log: MFB: Fixed compiler warning http://cvs.php.net/viewvc.cgi/php-src/ext/sysvshm/sysvshm.c?r1=1.86&r2=1.87&diff_format=u Index: php-src/ext/sysvshm/sysvshm.c diff -u php-src/ext/sysvshm/sysvshm.c:1.86 php-src/ext/sysvshm/sysvshm.c:1.87 --- php-src/ext/sysvshm/sysvshm.c:1.86 Tue Mar 10 23:39:51 2009 +++ php-src/ext/sysvshm/sysvshm.c Tue Mar 17 23:22:05 2009 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: sysvshm.c,v 1.86 2009/03/10 23:39:51 helly Exp $ */ +/* $Id: sysvshm.c,v 1.87 2009/03/17 23:22:05 iliaa Exp $ */ /* This has been built and tested on Linux 2.2.14 * @@ -166,19 +166,19 @@ /* get the id from a specified key or create new shared memory */ if ((shm_id = shmget(shm_key, 0, 0)) < 0) { if (shm_size < sizeof(sysvshm_chunk_head)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for key 0x%x: memorysize too small", shm_key); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for key 0x%lx: memorysize too small", shm_key); efree(shm_list_ptr); RETURN_FALSE; } if ((shm_id = shmget(shm_key, shm_size, shm_flag | IPC_CREAT | IPC_EXCL)) < 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for key 0x%x: %s", shm_key, strerror(errno)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for key 0x%lx: %s", shm_key, strerror(errno)); efree(shm_list_ptr); RETURN_FALSE; } } if ((shm_ptr = shmat(shm_id, NULL, 0)) == (void *) -1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for key 0x%x: %s", shm_key, strerror(errno)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for key 0x%lx: %s", shm_key, strerror(errno)); efree(shm_list_ptr); RETURN_FALSE; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/sysvshm sysvshm.c /ext/sysvshm/tests 002.phpt 003.phpt 004.phpt 005.phpt 006.phpt 007.phpt
felipe Wed Dec 24 00:04:40 2008 UTC Modified files: /php-src/ext/sysvshmsysvshm.c /php-src/ext/sysvshm/tests 002.phpt 003.phpt 004.phpt 005.phpt 006.phpt 007.phpt Log: - Standard http://cvs.php.net/viewvc.cgi/php-src/ext/sysvshm/sysvshm.c?r1=1.83&r2=1.84&diff_format=u Index: php-src/ext/sysvshm/sysvshm.c diff -u php-src/ext/sysvshm/sysvshm.c:1.83 php-src/ext/sysvshm/sysvshm.c:1.84 --- php-src/ext/sysvshm/sysvshm.c:1.83 Mon Nov 17 11:26:24 2008 +++ php-src/ext/sysvshm/sysvshm.c Wed Dec 24 00:04:40 2008 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: sysvshm.c,v 1.83 2008/11/17 11:26:24 felipe Exp $ */ +/* $Id: sysvshm.c,v 1.84 2008/12/24 00:04:40 felipe Exp $ */ /* This has been built and tested on Linux 2.2.14 * @@ -153,7 +153,7 @@ long shm_key, shm_id, shm_size = php_sysvshm.init_mem, shm_flag = 0666; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|ll", &shm_key, &shm_size, &shm_flag)) { - RETURN_FALSE; + return; } if (shm_size < 1) { @@ -209,7 +209,7 @@ sysvshm_shm *shm_list_ptr; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &shm_id)) { - RETURN_FALSE; + return; } SHM_FETCH_RESOURCE(shm_list_ptr, shm_id); RETURN_BOOL(SUCCESS == zend_list_delete(Z_LVAL_P(shm_id))); @@ -224,7 +224,7 @@ sysvshm_shm *shm_list_ptr; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &shm_id)) { - RETURN_FALSE; + return; } SHM_FETCH_RESOURCE(shm_list_ptr, shm_id); @@ -249,7 +249,7 @@ php_serialize_data_t var_hash; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rlz", &shm_id, &shm_key, &arg_var)) { - RETURN_FALSE; + return; } SHM_FETCH_RESOURCE(shm_list_ptr, shm_id); @@ -285,7 +285,7 @@ php_unserialize_data_t var_hash; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &shm_id, &shm_key)) { - RETURN_FALSE; + return; } SHM_FETCH_RESOURCE(shm_list_ptr, shm_id); @@ -318,7 +318,7 @@ sysvshm_shm *shm_list_ptr; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &shm_id, &shm_key)) { - RETURN_FALSE; + return; } SHM_FETCH_RESOURCE(shm_list_ptr, shm_id); RETURN_BOOL(php_check_shm_data(shm_list_ptr->ptr, shm_key) >= 0); @@ -334,7 +334,7 @@ sysvshm_shm *shm_list_ptr; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &shm_id, &shm_key)) { - RETURN_FALSE; + return; } SHM_FETCH_RESOURCE(shm_list_ptr, shm_id); http://cvs.php.net/viewvc.cgi/php-src/ext/sysvshm/tests/002.phpt?r1=1.3&r2=1.4&diff_format=u Index: php-src/ext/sysvshm/tests/002.phpt diff -u php-src/ext/sysvshm/tests/002.phpt:1.3 php-src/ext/sysvshm/tests/002.phpt:1.4 --- php-src/ext/sysvshm/tests/002.phpt:1.3 Wed Jul 18 13:51:50 2007 +++ php-src/ext/sysvshm/tests/002.phpt Wed Dec 24 00:04:40 2008 @@ -34,10 +34,10 @@ ?> --EXPECTF-- Warning: shm_attach() expects at least 1 parameter, 0 given in %s on line %d -bool(false) +NULL Warning: shm_attach() expects at most 3 parameters, 4 given in %s on line %d -bool(false) +NULL Warning: shm_attach(): Segment size must be greater then zero. in %s on line %d bool(false) http://cvs.php.net/viewvc.cgi/php-src/ext/sysvshm/tests/003.phpt?r1=1.3&r2=1.4&diff_format=u Index: php-src/ext/sysvshm/tests/003.phpt diff -u php-src/ext/sysvshm/tests/003.phpt:1.3 php-src/ext/sysvshm/tests/003.phpt:1.4 --- php-src/ext/sysvshm/tests/003.phpt:1.3 Mon Jun 25 17:37:48 2007 +++ php-src/ext/sysvshm/tests/003.phpt Wed Dec 24 00:04:40 2008 @@ -32,10 +32,10 @@ ?> --EXPECTF-- Warning: shm_detach() expects exactly 1 parameter, 0 given in %s003.php on line %d -bool(false) +NULL Warning: shm_detach() expects exactly 1 parameter, 2 given in %s003.php on line %d -bool(false) +NULL bool(true) Warning: shm_detach(): %d is not a valid sysvshm resource in %s003.php on line %d @@ -44,11 +44,11 @@ Warning: shm_remove(): %d is not a valid sysvshm resource in %s003.php on line %d Warning: shm_detach() expects parameter 1 to be resource, integer given in %s003.php on line %d -bool(false) +NULL Warning: shm_detach() expects parameter 1 to be resource, integer given in %s003.php on line %d -bool(false) +NULL Warning: shm_detach() expects parameter 1 to be resource, integer given in %s003.php on line %d -bool(false) +NULL Done http://cvs.php.net/viewvc.cgi/php-src/ext/sysvshm/tests/004.phpt?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/sysvshm/tests/
[PHP-CVS] cvs: php-src /ext/sysvshm sysvshm.c
felipe Tue Jul 1 15:50:09 2008 UTC Modified files: /php-src/ext/sysvshmsysvshm.c Log: - MFB: Added arginfo http://cvs.php.net/viewvc.cgi/php-src/ext/sysvshm/sysvshm.c?r1=1.79&r2=1.80&diff_format=u Index: php-src/ext/sysvshm/sysvshm.c diff -u php-src/ext/sysvshm/sysvshm.c:1.79 php-src/ext/sysvshm/sysvshm.c:1.80 --- php-src/ext/sysvshm/sysvshm.c:1.79 Mon Dec 31 07:12:17 2007 +++ php-src/ext/sysvshm/sysvshm.c Tue Jul 1 15:50:09 2008 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: sysvshm.c,v 1.79 2007/12/31 07:12:17 sebastian Exp $ */ +/* $Id: sysvshm.c,v 1.80 2008/07/01 15:50:09 felipe Exp $ */ /* This has been built and tested on Linux 2.2.14 * @@ -39,16 +39,60 @@ #include "ext/standard/php_smart_str.h" #include "php_ini.h" +/* {{{ arginfo */ +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_shm_attach, 0, 0, 1) + ZEND_ARG_INFO(0, key) + ZEND_ARG_INFO(0, memsize) + ZEND_ARG_INFO(0, perm) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_shm_detach, 0, 0, 1) + ZEND_ARG_INFO(0, shm_identifier) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_shm_remove, 0, 0, 1) + ZEND_ARG_INFO(0, shm_identifier) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_shm_put_var, 0, 0, 3) + ZEND_ARG_INFO(0, shm_identifier) + ZEND_ARG_INFO(0, variable_key) + ZEND_ARG_INFO(0, variable) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_shm_get_var, 0, 0, 2) + ZEND_ARG_INFO(0, id) + ZEND_ARG_INFO(0, variable_key) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_shm_has_var, 0, 0, 2) + ZEND_ARG_INFO(0, id) + ZEND_ARG_INFO(0, variable_key) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_shm_remove_var, 0, 0, 2) + ZEND_ARG_INFO(0, id) + ZEND_ARG_INFO(0, variable_key) +ZEND_END_ARG_INFO() +/* }}} */ + /* {{{ sysvshm_functions[] */ const zend_function_entry sysvshm_functions[] = { - PHP_FE(shm_attach, NULL) - PHP_FE(shm_remove, NULL) - PHP_FE(shm_detach, NULL) - PHP_FE(shm_put_var, NULL) - PHP_FE(shm_has_var, NULL) - PHP_FE(shm_get_var, NULL) - PHP_FE(shm_remove_var, NULL) + PHP_FE(shm_attach, arginfo_shm_attach) + PHP_FE(shm_remove, arginfo_shm_detach) + PHP_FE(shm_detach, arginfo_shm_remove) + PHP_FE(shm_put_var, arginfo_shm_put_var) + PHP_FE(shm_has_var, arginfo_shm_has_var) + PHP_FE(shm_get_var, arginfo_shm_get_var) + PHP_FE(shm_remove_var, arginfo_shm_remove_var) {NULL, NULL, NULL} }; /* }}} */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/sysvshm sysvshm.c
tony2001Thu Jun 29 09:03:00 2006 UTC Modified files: /php-src/ext/sysvshmsysvshm.c Log: make sure we won't get into endless loop if value shm_var->next is corrupted http://cvs.php.net/viewvc.cgi/php-src/ext/sysvshm/sysvshm.c?r1=1.72&r2=1.73&diff_format=u Index: php-src/ext/sysvshm/sysvshm.c diff -u php-src/ext/sysvshm/sysvshm.c:1.72 php-src/ext/sysvshm/sysvshm.c:1.73 --- php-src/ext/sysvshm/sysvshm.c:1.72 Sun Jan 1 13:09:56 2006 +++ php-src/ext/sysvshm/sysvshm.c Thu Jun 29 09:03:00 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: sysvshm.c,v 1.72 2006/01/01 13:09:56 sniper Exp $ */ +/* $Id: sysvshm.c,v 1.73 2006/06/29 09:03:00 tony2001 Exp $ */ /* This has been built and tested on Linux 2.2.14 * @@ -408,6 +408,10 @@ return pos; } pos += shm_var->next; + + if (shm_var->next <= 0 || pos < ptr->start) { + return -1; + } } return -1; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/sysvshm sysvshm.c
tony2001Thu Jan 20 04:59:23 2005 EDT Modified files: /php-src/ext/sysvshmsysvshm.c Log: fix typos in error messages http://cvs.php.net/diff.php/php-src/ext/sysvshm/sysvshm.c?r1=1.68&r2=1.69&ty=u Index: php-src/ext/sysvshm/sysvshm.c diff -u php-src/ext/sysvshm/sysvshm.c:1.68 php-src/ext/sysvshm/sysvshm.c:1.69 --- php-src/ext/sysvshm/sysvshm.c:1.68 Mon Nov 22 18:29:59 2004 +++ php-src/ext/sysvshm/sysvshm.c Thu Jan 20 04:59:23 2005 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: sysvshm.c,v 1.68 2004/11/22 23:29:59 iliaa Exp $ */ +/* $Id: sysvshm.c,v 1.69 2005/01/20 09:59:23 tony2001 Exp $ */ /* This has been built and tested on Linux 2.2.14 * @@ -189,7 +189,7 @@ convert_to_long_ex(arg_id); shm_list_ptr = (sysvshm_shm *) zend_list_find(Z_LVAL_PP(arg_id), &type); if (!shm_list_ptr || type != php_sysvshm.le_shm) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "The parameter is not a valid shm_indentifier"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "The parameter is not a valid shm_identifier"); RETURN_FALSE; } @@ -217,7 +217,7 @@ shm_list_ptr = (sysvshm_shm *) zend_list_find(id, &type); if (!shm_list_ptr) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "The parameter is not a valid shm_indentifier"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "The parameter is not a valid shm_identifier"); RETURN_FALSE; } @@ -318,7 +318,7 @@ PHP_VAR_UNSERIALIZE_INIT(var_hash); if (php_var_unserialize(&return_value, (const unsigned char **) &shm_data, shm_data + shm_var->length, &var_hash TSRMLS_CC) != 1) { PHP_VAR_UNSERIALIZE_DESTROY(var_hash); - php_error_docref(NULL TSRMLS_CC, E_WARNING, "variable data in shared memory is corruped"); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "variable data in shared memory is corrupted"); RETURN_FALSE; } PHP_VAR_UNSERIALIZE_DESTROY(var_hash); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/sysvshm sysvshm.c
iliaa Mon Nov 22 18:29:59 2004 EDT Modified files: /php-src/ext/sysvshmsysvshm.c Log: Fixed compile warning. http://cvs.php.net/diff.php/php-src/ext/sysvshm/sysvshm.c?r1=1.67&r2=1.68&ty=u Index: php-src/ext/sysvshm/sysvshm.c diff -u php-src/ext/sysvshm/sysvshm.c:1.67 php-src/ext/sysvshm/sysvshm.c:1.68 --- php-src/ext/sysvshm/sysvshm.c:1.67 Tue Apr 20 20:11:28 2004 +++ php-src/ext/sysvshm/sysvshm.c Mon Nov 22 18:29:59 2004 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: sysvshm.c,v 1.67 2004/04/21 00:11:28 iliaa Exp $ */ +/* $Id: sysvshm.c,v 1.68 2004/11/22 23:29:59 iliaa Exp $ */ /* This has been built and tested on Linux 2.2.14 * @@ -316,7 +316,7 @@ shm_data = &shm_var->mem; PHP_VAR_UNSERIALIZE_INIT(var_hash); - if (php_var_unserialize(&return_value, (const char **) &shm_data, shm_data + shm_var->length, &var_hash TSRMLS_CC) != 1) { + if (php_var_unserialize(&return_value, (const unsigned char **) &shm_data, shm_data + shm_var->length, &var_hash TSRMLS_CC) != 1) { PHP_VAR_UNSERIALIZE_DESTROY(var_hash); php_error_docref(NULL TSRMLS_CC, E_WARNING, "variable data in shared memory is corruped"); RETURN_FALSE; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src /ext/sysvshm sysvshm.c
iliaa Tue Apr 20 20:11:28 2004 EDT Modified files: /php-src/ext/sysvshmsysvshm.c Log: Fixed possible memory leaks. Prevent shm_attach() from destroying non-shm resources. http://cvs.php.net/diff.php/php-src/ext/sysvshm/sysvshm.c?r1=1.66&r2=1.67&ty=u Index: php-src/ext/sysvshm/sysvshm.c diff -u php-src/ext/sysvshm/sysvshm.c:1.66 php-src/ext/sysvshm/sysvshm.c:1.67 --- php-src/ext/sysvshm/sysvshm.c:1.66 Thu Jan 8 03:17:40 2004 +++ php-src/ext/sysvshm/sysvshm.c Tue Apr 20 20:11:28 2004 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: sysvshm.c,v 1.66 2004/01/08 08:17:40 andi Exp $ */ +/* $Id: sysvshm.c,v 1.67 2004/04/21 00:11:28 iliaa Exp $ */ /* This has been built and tested on Linux 2.2.14 * @@ -134,25 +134,25 @@ shm_key = Z_LVAL_PP(arg_key); } - if ((shm_list_ptr = (sysvshm_shm *) emalloc(sizeof(sysvshm_shm))) == NULL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for key 0x%x: cannot allocate internal listelement", shm_key); - RETURN_FALSE; - } + shm_list_ptr = (sysvshm_shm *) emalloc(sizeof(sysvshm_shm)); /* get the id from a specified key or create new shared memory */ if ((shm_id = shmget(shm_key, 0, 0)) < 0) { if (shm_size < sizeof(sysvshm_chunk_head)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for key 0x%x: memorysize too small", shm_key); + efree(shm_list_ptr); RETURN_FALSE; } if ((shm_id = shmget(shm_key, shm_size, shm_flag | IPC_CREAT | IPC_EXCL)) < 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for key 0x%x: %s", shm_key, strerror(errno)); + efree(shm_list_ptr); RETURN_FALSE; } } if ((shm_ptr = shmat(shm_id, NULL, 0)) == (void *) - 1) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for key 0x%x: %s", shm_key, strerror(errno)); + efree(shm_list_ptr); RETURN_FALSE; } @@ -179,15 +179,22 @@ PHP_FUNCTION(shm_detach) { zval **arg_id; - long id; + int type; + sysvshm_shm *shm_list_ptr; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg_id) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(arg_id); - id = Z_LVAL_PP(arg_id); - zend_list_delete(id); + shm_list_ptr = (sysvshm_shm *) zend_list_find(Z_LVAL_PP(arg_id), &type); + if (!shm_list_ptr || type != php_sysvshm.le_shm) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "The parameter is not a valid shm_indentifier"); + RETURN_FALSE; + } + + zend_list_delete(Z_LVAL_PP(arg_id)); + RETURN_TRUE; } /* }}} */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php