Fixed JSON escape sequence parsing.
This commit is contained in:
@@ -1273,7 +1273,8 @@ nxt_conf_json_parse_string(nxt_mp_t *mp, nxt_conf_value_t *value, u_char *start,
|
|||||||
case sw_encoded4:
|
case sw_encoded4:
|
||||||
|
|
||||||
if (nxt_fast_path((ch >= '0' && ch <= '9')
|
if (nxt_fast_path((ch >= '0' && ch <= '9')
|
||||||
|| (ch >= 'A' && ch <= 'F')))
|
|| (ch >= 'A' && ch <= 'F')
|
||||||
|
|| (ch >= 'a' && ch <= 'f')))
|
||||||
{
|
{
|
||||||
state = (state == sw_encoded4) ? sw_usual : state + 1;
|
state = (state == sw_encoded4) ? sw_usual : state + 1;
|
||||||
continue;
|
continue;
|
||||||
@@ -1368,7 +1369,8 @@ nxt_conf_json_parse_string(nxt_mp_t *mp, nxt_conf_value_t *value, u_char *start,
|
|||||||
|
|
||||||
for ( ;; ) {
|
for ( ;; ) {
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
utf = (utf << 4) + (p[i] - (p[i] >= 'A' ? 'A' : '0'));
|
utf = (utf << 4) | (p[i] >= 'A' ? 10 + ((p[i] & ~0x20) - 'A')
|
||||||
|
: p[i] - '0');
|
||||||
}
|
}
|
||||||
|
|
||||||
p += 4;
|
p += 4;
|
||||||
|
|||||||
Reference in New Issue
Block a user