iliaa Mon Oct 17 11:43:14 2005 EDT
Modified files: (Branch: PHP_4_4)
/php-src/ext/pspell pspell.c
/php-src NEWS
Log:
MFH: Properly fixed bug #34456 (original patch completely reverted).
http://cvs.php.net/diff.php/php-src/ext/pspell/pspell.c?r1=1.28.8.5.4.1&r2=1.28.8.5.4.2&ty=u
Index: php-src/ext/pspell/pspell.c
diff -u php-src/ext/pspell/pspell.c:1.28.8.5.4.1
php-src/ext/pspell/pspell.c:1.28.8.5.4.2
--- php-src/ext/pspell/pspell.c:1.28.8.5.4.1 Mon Sep 12 12:59:56 2005
+++ php-src/ext/pspell/pspell.c Mon Oct 17 11:43:10 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pspell.c,v 1.28.8.5.4.1 2005/09/12 16:59:56 iliaa Exp $ */
+/* $Id: pspell.c,v 1.28.8.5.4.2 2005/10/17 15:43:10 iliaa Exp $ */
#define IS_EXT_MODULE
@@ -99,6 +99,22 @@
delete_pspell_config(config);
}
+#define PSPELL_FETCH_CONFIG \
+ convert_to_long_ex(conf); \
+ config = (PspellConfig *) zend_list_find(Z_LVAL_PP(conf), &type);
\
+ if (config == NULL || type != le_pspell_config) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a
PSPELL config index", Z_LVAL_PP(conf)); \
+ RETURN_FALSE; \
+ } \
+
+#define PSPELL_FETCH_MANAGER \
+ convert_to_long_ex(scin); \
+ manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
\
+ if (!manager || type != le_pspell) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "%ld is not a
PSPELL result index", Z_LVAL_PP(scin)); \
+ RETURN_FALSE; \
+ } \
+
/* {{{ PHP_MINIT_FUNCTION
*/
PHP_MINIT_FUNCTION(pspell)
@@ -350,14 +366,8 @@
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(conf);
- config = (PspellConfig *) zend_list_find(Z_LVAL_PP(conf), &type);
+ PSPELL_FETCH_CONFIG;
- if (config == NULL || type != le_pspell_config) {
- php_error(E_WARNING, "%ld is not a PSPELL config index",
Z_LVAL_PP(conf));
- RETURN_FALSE;
- }
-
ret = new_pspell_manager(config);
if(pspell_error_number(ret) != 0){
@@ -385,13 +395,9 @@
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(scin);
convert_to_string_ex(word);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
- if(!manager){
- php_error(E_WARNING, "%ld is not a PSPELL result
index",Z_LVAL_PP(scin));
- RETURN_FALSE;
- }
+
+ PSPELL_FETCH_MANAGER;
if(pspell_manager_check(manager, Z_STRVAL_PP(word))){
RETURN_TRUE;
@@ -417,13 +423,9 @@
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(scin);
convert_to_string_ex(word);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
- if(!manager){
- php_error(E_WARNING, "%ld is not a PSPELL result
index",Z_LVAL_PP(scin));
- RETURN_FALSE;
- }
+
+ PSPELL_FETCH_MANAGER;
array_init(return_value);
@@ -455,14 +457,10 @@
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(scin);
convert_to_string_ex(miss);
convert_to_string_ex(corr);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
- if(!manager){
- php_error(E_WARNING, "%ld is not a PSPELL result
index",Z_LVAL_PP(scin));
- RETURN_FALSE;
- }
+
+ PSPELL_FETCH_MANAGER;
pspell_manager_store_replacement(manager, Z_STRVAL_PP(miss),
Z_STRVAL_PP(corr));
if(pspell_manager_error_number(manager) == 0){
@@ -488,13 +486,9 @@
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(scin);
convert_to_string_ex(word);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
- if(!manager){
- php_error(E_WARNING, "%ld is not a PSPELL result
index",Z_LVAL_PP(scin));
- RETURN_FALSE;
- }
+
+ PSPELL_FETCH_MANAGER;
/*If the word is empty, we have to return; otherwise we'll segfault!
ouch!*/
if(Z_STRLEN_PP(word) == 0){
@@ -525,13 +519,9 @@
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(scin);
convert_to_string_ex(word);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
- if(!manager){
- php_error(E_WARNING, "%ld is not a PSPELL result
index",Z_LVAL_PP(scin));
- RETURN_FALSE;
- }
+
+ PSPELL_FETCH_MANAGER;
/*If the word is empty, we have to return; otherwise we'll segfault!
ouch!*/
if(Z_STRLEN_PP(word) == 0){
@@ -562,12 +552,7 @@
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(scin);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
- if(!manager){
- php_error(E_WARNING, "%ld is not a PSPELL result
index",Z_LVAL_PP(scin));
- RETURN_FALSE;
- }
+ PSPELL_FETCH_MANAGER;
pspell_manager_clear_session(manager);
if(pspell_manager_error_number(manager) == 0){
@@ -593,12 +578,7 @@
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(scin);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(scin), &type);
- if(!manager){
- php_error(E_WARNING, "%ld is not a PSPELL result
index",Z_LVAL_PP(scin));
- RETURN_FALSE;
- }
+ PSPELL_FETCH_MANAGER;
pspell_manager_save_all_word_lists(manager);
@@ -666,25 +646,18 @@
PHP_FUNCTION(pspell_config_runtogether)
{
int type;
- zval **sccin, **runtogether;
+ zval **conf, **runtogether;
int argc;
- PspellManager *manager;
PspellConfig *config;
argc = ZEND_NUM_ARGS();
- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&runtogether) ==
FAILURE) {
+ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&runtogether) ==
FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(sccin);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type);
- if (!manager){
- php_error(E_WARNING, "%ld is not a PSPELL config
index",Z_LVAL_PP(sccin));
- RETURN_FALSE;
- }
+ PSPELL_FETCH_CONFIG;
- config = pspell_manager_config(manager);
convert_to_boolean_ex(runtogether);
pspell_config_replace(config, "run-together", Z_LVAL_PP(runtogether) ?
"true" : "false");
@@ -697,25 +670,18 @@
PHP_FUNCTION(pspell_config_mode)
{
int type;
- zval **sccin, **mode;
+ zval **conf, **mode;
int argc;
- PspellManager *manager;
PspellConfig *config;
argc = ZEND_NUM_ARGS();
- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&mode) == FAILURE) {
+ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&mode) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(sccin);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type);
- if (!manager) {
- php_error(E_WARNING, "%ld is not a PSPELL config
index",Z_LVAL_PP(sccin));
- RETURN_FALSE;
- }
+ PSPELL_FETCH_CONFIG;
- config = pspell_manager_config(manager);
convert_to_long_ex(mode);
/* First check what mode we want (how many suggestions) */
@@ -736,28 +702,21 @@
PHP_FUNCTION(pspell_config_ignore)
{
int type;
- zval **sccin, **pignore;
+ zval **conf, **pignore;
int argc;
int loc = PSPELL_LARGEST_WORD;
char ignore_str[PSPELL_LARGEST_WORD + 1];
long ignore = 0L;
- PspellManager *manager;
PspellConfig *config;
argc = ZEND_NUM_ARGS();
- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&pignore) ==
FAILURE) {
+ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&pignore) ==
FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(sccin);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type);
- if (!manager) {
- php_error(E_WARNING, "%ld is not a PSPELL config
index",Z_LVAL_PP(sccin));
- RETURN_FALSE;
- }
- config = pspell_manager_config(manager);
+ PSPELL_FETCH_CONFIG;
convert_to_long_ex(pignore);
ignore = Z_LVAL_PP(pignore);
@@ -788,25 +747,18 @@
PHP_FUNCTION(pspell_config_personal)
{
int type;
- zval **sccin, **personal;
+ zval **conf, **personal;
int argc;
PspellConfig *config;
- PspellManager *manager;
argc = ZEND_NUM_ARGS();
- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&personal) ==
FAILURE) {
+ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&personal) ==
FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(sccin);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type);
- if (!manager) {
- php_error(E_WARNING, "%ld is not a PSPELL config
index",Z_LVAL_PP(sccin));
- RETURN_FALSE;
- }
+ PSPELL_FETCH_CONFIG;
- config = pspell_manager_config(manager);
convert_to_string_ex(personal);
if (PG(safe_mode) && (!php_checkuid(Z_STRVAL_PP(personal), NULL,
CHECKUID_CHECK_FILE_AND_DIR))) {
@@ -828,25 +780,18 @@
PHP_FUNCTION(pspell_config_repl)
{
int type;
- zval **sccin, **repl;
+ zval **conf, **repl;
int argc;
- PspellManager *manager;
PspellConfig *config;
argc = ZEND_NUM_ARGS();
- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&repl) == FAILURE) {
+ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&repl) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(sccin);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type);
- if (!manager) {
- php_error(E_WARNING, "%ld is not a PSPELL config
index",Z_LVAL_PP(sccin));
- RETURN_FALSE;
- }
+ PSPELL_FETCH_CONFIG;
- config = pspell_manager_config(manager);
pspell_config_replace(config, "save-repl", "true");
convert_to_string_ex(repl);
@@ -870,25 +815,18 @@
PHP_FUNCTION(pspell_config_save_repl)
{
int type;
- zval **sccin, **save;
+ zval **conf, **save;
int argc;
- PspellManager *manager;
PspellConfig *config;
argc = ZEND_NUM_ARGS();
- if (argc != 2 || zend_get_parameters_ex(argc,&sccin,&save) == FAILURE) {
+ if (argc != 2 || zend_get_parameters_ex(argc,&conf,&save) == FAILURE) {
WRONG_PARAM_COUNT;
}
- convert_to_long_ex(sccin);
- manager = (PspellManager *) zend_list_find(Z_LVAL_PP(sccin), &type);
- if (!manager) {
- php_error(E_WARNING, "%ld is not a PSPELL config
index",Z_LVAL_PP(sccin));
- RETURN_FALSE;
- }
+ PSPELL_FETCH_CONFIG;
- config = pspell_manager_config(manager);
convert_to_boolean_ex(save);
pspell_config_replace(config, "save-repl", Z_LVAL_PP(save) ? "true" :
"false");
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.1247.2.920.2.57&r2=1.1247.2.920.2.58&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.1247.2.920.2.57 php-src/NEWS:1.1247.2.920.2.58
--- php-src/NEWS:1.1247.2.920.2.57 Thu Oct 13 06:04:51 2005
+++ php-src/NEWS Mon Oct 17 11:43:12 2005
@@ -26,7 +26,7 @@
- Fixed bug #34565 (mb_send_mail does not fetch mail.force_extra_parameters).
(Marco, Ilia)
- Fixed bug #34557 (php -m exits with "error" 1). (Johannes)
-- Fixed bug #34456 (Possible crash inside pspell extension). (Nuno)
+- Fixed bug #34456 (Possible crash inside pspell extension). (Ilia)
- Fixed bug #34311 (unserialize() crashes with chars above 191 dec). (Nuno)
- Fixed bug #34307 (on_modify handler not called to set the default value if
setting from php.ini was invalid). (Andrei)
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php