Date:      Wed Mar 15 23:51:31 CET 2006
User:      Shane Caraveo
Directory: xdebug
Log Message:
[2.0]
- fix escaped characters in dbgp command
- fix using double quoted strings in array indicies
# example: property_get -n "$_SERVER[\"QUERY_STRING\"]"
# example: property_get -n "$_SERVER[\'QUERY_STRING\']"
Modified files:
           xdebug/xdebug_handler_dbgp.c     (version: 1.86)
[FILE: /xdebug/xdebug_handler_dbgp.c]
===================================================================
RCS file: cvstemp,v
retrieving revision 1.85
retrieving revision 1.86
diff -u -r1.85 -r1.86
--- xdebug/xdebug_handler_dbgp.c:1.85 Tue Mar 14 20:20:48 2006 GMT
+++ xdebug/xdebug_handler_dbgp.c Wed Mar 15 21:51:31 2006 GMT
@@ -383,6 +383,7 @@
                 zval *retval = NULL;
                 char *current_classname = NULL;
                 int   cc_length = 0;
+		char  quotechar = 0;
 
                 /* Set the target table to the currently active scope */
                 st = XG(active_symbol_table);
@@ -435,9 +436,10 @@
                                                 break;
                                         case 3:
                                                 /* Associative arrays */
-						if (*p[0] == '\'') {
+						if (*p[0] == '\'' || *p[0] == '"') {
                                                         state = 4;
                                                         keyword = *p + 1;
+							quotechar = *p[0];
                                                 }
                                                 /* Numerical index */
                                                 if (*p[0] >= '0' && *p[0] <= '9') {
@@ -446,7 +448,8 @@
                                                 }
                                                 break;
                                         case 4:
-						if (*p[0] == '\'') {
+						if (*p[0] == quotechar) {
+							quotechar = 0;
                                                         state = 5;
                                                         keyword_end = *p;
                                                         retval = fetch_zval_from_symbol_table(st, keyword, keyword_end - keyword, type, current_classname, cc_length TSRMLS_CC);
@@ -1885,6 +1888,7 @@
         xdebug_dbgp_arg *args = NULL;
         char *ptr;
         int   state;
+	int   charescaped = 0;
         char  opt = ' ', *value_begin = NULL;
 
         args = xdmalloc(sizeof (xdebug_dbgp_arg));
@@ -1961,16 +1965,29 @@
                                 }
                                 break;
                         case STATE_QUOTED:
+				/* if the quote is escaped, remain in STATE_QUOTED.  This
+				   will also handle other escaped chars, or an instance of
+				   an escaped slash followed by a quote: \\"
+				*/
+				if (*ptr == '\\') {
+					charescaped = !charescaped;
+				} else
                                 if (*ptr == '"') {
                                         int index = opt - 'a';
 
+					if (charescaped) {
+						charescaped = 0;
+						break;
+					}
                                         if (opt == '-') {
                                                 index = 26;
                                         }
 
                                         if (!args->value[index]) {
-						args->value[index] = xdcalloc(1, ptr - value_begin + 1);
-						memcpy(args->value[index], value_begin, ptr - value_begin);
+						int len = ptr - value_begin;
+						args->value[index] = xdcalloc(1, len + 1);
+						memcpy(args->value[index], value_begin, len);
+						php_stripcslashes(args->value[index], &len);
                                                 state = STATE_SKIP_CHAR;
                                         } else {
                                                 goto duplicate_opts;
@@ -2061,7 +2078,7 @@
 
 char *xdebug_dbgp_get_revision(void)
 {
-	return "$Revision: 1.85 $";
+	return "$Revision: 1.86 $";
 }
 
 int xdebug_dbgp_cmdloop(xdebug_con *context TSRMLS_DC)
Received on Wed Mar 15 2006 - 23:51:41 GMT
This archive was generated by hypermail 2.2.0 : Sun Jun 24 2018 - 04:00:03 BST