diff options
Diffstat (limited to 'ext/imap/php_imap.c')
-rw-r--r-- | ext/imap/php_imap.c | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index d5f07a3e22..9e626a4cfa 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -23,10 +23,9 @@ | Hartmut Holzgraefe <hholzgra@php.net> | | Jani Taskinen <jani.taskinen@iki.fi> | | Daniel R. Kalowsky <kalowsky@php.net> | - | PHP 4.0 updates: Zeev Suraski <zeev@zend.com> | + | PHP 4.0 updates: Zeev Suraski <zeev@php.net> | +----------------------------------------------------------------------+ */ -/* $Id$ */ #define IMAP41 @@ -562,6 +561,15 @@ static const zend_module_dep imap_deps[] = { }; /* }}} */ + +/* {{{ PHP_INI + */ +PHP_INI_BEGIN() +STD_PHP_INI_BOOLEAN("imap.enable_insecure_rsh", "0", PHP_INI_SYSTEM, OnUpdateBool, enable_rsh, zend_imap_globals, imap_globals) +PHP_INI_END() +/* }}} */ + + /* {{{ imap_module_entry */ zend_module_entry imap_module_entry = { @@ -832,6 +840,8 @@ PHP_MINIT_FUNCTION(imap) { unsigned long sa_all = SA_MESSAGES | SA_RECENT | SA_UNSEEN | SA_UIDNEXT | SA_UIDVALIDITY; + REGISTER_INI_ENTRIES(); + #ifndef PHP_WIN32 mail_link(&unixdriver); /* link in the unix driver */ mail_link(&mhdriver); /* link in the mh driver */ @@ -1049,6 +1059,12 @@ PHP_MINIT_FUNCTION(imap) GC_TEXTS texts */ + if (!IMAPG(enable_rsh)) { + /* disable SSH and RSH, see https://bugs.php.net/bug.php?id=77153 */ + mail_parameters (NIL, SET_RSHTIMEOUT, 0); + mail_parameters (NIL, SET_SSHTIMEOUT, 0); + } + le_imap = zend_register_list_destructors_ex(mail_close_it, NULL, "imap", module_number); return SUCCESS; } @@ -1136,6 +1152,8 @@ PHP_MINFO_FUNCTION(imap) php_info_print_table_row(2, "Kerberos Support", "enabled"); #endif php_info_print_table_end(); + + DISPLAY_INI_ENTRIES(); } /* }}} */ @@ -1436,7 +1454,7 @@ PHP_FUNCTION(imap_get_quota) mail_parameters(NIL, SET_QUOTA, (void *) mail_getquota); if (!imap_getquota(imap_le_struct->imap_stream, ZSTR_VAL(qroot))) { php_error_docref(NULL, E_WARNING, "c-client imap_getquota failed"); - zval_dtor(return_value); + zend_array_destroy(Z_ARR_P(return_value)); RETURN_FALSE; } } @@ -1465,7 +1483,7 @@ PHP_FUNCTION(imap_get_quotaroot) mail_parameters(NIL, SET_QUOTA, (void *) mail_getquota); if (!imap_getquotaroot(imap_le_struct->imap_stream, ZSTR_VAL(mbox))) { php_error_docref(NULL, E_WARNING, "c-client imap_getquotaroot failed"); - zval_dtor(return_value); + zend_array_destroy(Z_ARR_P(return_value)); RETURN_FALSE; } } @@ -1542,7 +1560,7 @@ PHP_FUNCTION(imap_getacl) mail_parameters(NIL, SET_ACL, (void *) mail_getacl); if (!imap_getacl(imap_le_struct->imap_stream, ZSTR_VAL(mailbox))) { php_error(E_WARNING, "c-client imap_getacl failed"); - zval_dtor(return_value); + zend_array_destroy(Z_ARR_P(return_value)); RETURN_FALSE; } @@ -3339,7 +3357,7 @@ PHP_FUNCTION(imap_bodystruct) body=mail_body(imap_le_struct->imap_stream, msg, (unsigned char*)ZSTR_VAL(section)); if (body == NULL) { - zval_dtor(return_value); + zval_ptr_dtor(return_value); RETURN_FALSE; } if (body->type <= TYPEMAX) { @@ -4290,7 +4308,7 @@ PHP_FUNCTION(imap_mime_header_decode) } if (decode == NULL) { efree(charset); - zval_dtor(return_value); + zend_array_destroy(Z_ARR_P(return_value)); RETURN_FALSE; } object_init(&myobject); |