Hi All,

To carry on from the XMLRPC Error patch, here is another one that makes
PHP bork on parse errors as well as others from an INI directive called
break_on_parse.

The reason for this is if xmlrpc_errors is on, and PHP throws 2 errors,
2 xmlrpc error packets will be returned, making certain xmlrpc clients
(rightfully) spew becasue they have recieved 2 xmlrpc fault packets (xml
documents).

Cheerio,
Matta
-- 
Matt Allen
Technical Director
Investigation Marketplace
0413 777 771
[EMAIL PROTECTED]
Index: main.c
===================================================================
RCS file: /repository/php4/main/main.c,v
retrieving revision 1.383
diff -u -r1.383 main.c
--- main.c      23 Jul 2001 14:05:26 -0000      1.383
+++ main.c      25 Jul 2001 10:24:24 -0000
@@ -202,6 +202,7 @@
        STD_PHP_INI_BOOLEAN("enable_dl",                        "1",            
PHP_INI_SYSTEM,         OnUpdateBool,                   enable_dl,                     
 
        php_core_globals,       core_globals)
        STD_PHP_INI_BOOLEAN("expose_php",                       "1",            
PHP_INI_SYSTEM,         OnUpdateBool,                   expose_php,                    
 
        php_core_globals,       core_globals)
        STD_PHP_INI_BOOLEAN("html_errors",                      "1",            
PHP_INI_SYSTEM,         OnUpdateBool,                   html_errors,                   
 
php_core_globals,       core_globals)
+       STD_PHP_INI_BOOLEAN("break_on_parse",           "0",            
+PHP_INI_SYSTEM,         OnUpdateBool,                   break_on_parse,               
+  php_core_globals,       core_globals)
        STD_PHP_INI_BOOLEAN("xmlrpc_errors",            "0",            
PHP_INI_SYSTEM,         OnUpdateBool,                   xmlrpc_errors,                 
 php_core_globals,       core_globals)
        STD_PHP_INI_ENTRY("xmlrpc_error_number",        "0",            PHP_INI_ALL,   
         OnUpdateInt,                    xmlrpc_error_number,    php_core_globals,     
  core_globals)
        STD_PHP_INI_BOOLEAN("ignore_user_abort",        "0",            PHP_INI_ALL,   
         OnUpdateBool,                   ignore_user_abort,              
php_core_globals,       core_globals)
@@ -277,7 +278,7 @@
        time_t error_time;
        PLS_FETCH();
 
-       /* Try to use the specified logging location. */
+       
        if (PG(error_log) != NULL) {
 #ifdef HAVE_SYSLOG_H
                if (!strcmp(PG(error_log), "syslog")) {
@@ -451,7 +452,6 @@
                        }
                /* no break - intentionally */
                case E_ERROR:
-               /*case E_PARSE: the parser would return 1 (failure), we can bail out 
nicely */
                case E_COMPILE_ERROR:
                case E_USER_ERROR:
                        if (module_initialized) {
@@ -459,6 +459,13 @@
                                return;
                        }
                        break;
+               case E_PARSE:
+                       if (PG(break_on_parse)) {
+                               if (module_initialized) {
+                                       zend_bailout();
+                                       return;
+                               }
+                       }
        }
 
        /* Log if necessary */
Index: php_globals.h
===================================================================
RCS file: /repository/php4/main/php_globals.h,v
retrieving revision 1.68
diff -u -r1.68 php_globals.h
--- php_globals.h       17 Jul 2001 16:46:07 -0000      1.68
+++ php_globals.h       25 Jul 2001 10:24:25 -0000
@@ -127,7 +127,7 @@
        zend_bool xmlrpc_errors;
 
        long xmlrpc_error_number;
-
+       zend_bool break_on_parse;
 
        zend_bool modules_activated;
 

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to