mirror of
https://github.com/php/php-src.git
synced 2026-04-27 10:16:41 +02:00
Fix processing of control characters; they should be escaped as \u
sequences.
This commit is contained in:
@@ -169,7 +169,7 @@ static const int ascii_class[128] = {
|
||||
accepted if the end of the text is in state 9 and mode is MODE_DONE.
|
||||
*/
|
||||
static const int state_transition_table[30][31] = {
|
||||
/* 0*/ { 0, 0,-8,-1,-6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||
/* 0*/ { 0, 0,-8,-1,-6,-1,-1,-1, 3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||
/* 1*/ { 1, 1,-1,-9,-1,-1,-1,-1, 3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
|
||||
/* 2*/ { 2, 2,-8,-1,-6,-5,-1,-1, 3,-1,-1,-1,20,-1,21,22,-1,-1,-1,-1,-1,13,-1,17,-1,-1,10,-1,-1,-1,-1},
|
||||
/* 3*/ { 3,-1, 3, 3, 3, 3, 3, 3,-4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
|
||||
@@ -577,6 +577,14 @@ JSON_parser(zval *z, unsigned short p[], int length, int assoc TSRMLS_DC)
|
||||
case MODE_OBJECT:
|
||||
the_state = 9;
|
||||
break;
|
||||
case MODE_DONE:
|
||||
if (type == IS_STRING) {
|
||||
smart_str_0(&buf);
|
||||
ZVAL_STRINGL(z, buf.c, buf.len, 1);
|
||||
the_state = 9;
|
||||
break;
|
||||
}
|
||||
/* fall through if not IS_STRING */
|
||||
default:
|
||||
FREE_BUFFERS();
|
||||
return false;
|
||||
|
||||
+1
-1
@@ -303,7 +303,7 @@ static void json_escape_string(smart_str *buf, char *s, int len)
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if (us < ' ' || (us & 127) == us)
|
||||
if (us >= ' ' && (us & 127) == us)
|
||||
{
|
||||
smart_str_appendc(buf, (unsigned char) us);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user