Deleted
Added
nxt_conf.c (598:70677ad404c1) | nxt_conf.c (611:323e11065f83) |
---|---|
1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) Valentin V. Bartenev 5 * Copyright (C) NGINX, Inc. 6 */ 7 8#include <nxt_main.h> --- 1636 unchanged lines hidden (view full) --- 1645 for (i = 0; i < 4; i++) { 1646 utf = (utf << 4) | (p[i] >= 'A' ? 10 + ((p[i] & ~0x20) - 'A') 1647 : p[i] - '0'); 1648 } 1649 1650 p += 4; 1651 1652 if (utf_high != 0) { | 1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) Valentin V. Bartenev 5 * Copyright (C) NGINX, Inc. 6 */ 7 8#include <nxt_main.h> --- 1636 unchanged lines hidden (view full) --- 1645 for (i = 0; i < 4; i++) { 1646 utf = (utf << 4) | (p[i] >= 'A' ? 10 + ((p[i] & ~0x20) - 'A') 1647 : p[i] - '0'); 1648 } 1649 1650 p += 4; 1651 1652 if (utf_high != 0) { |
1653 if (nxt_slow_path(utf < 0xdc00 || utf > 0xdfff)) { | 1653 if (nxt_slow_path(utf < 0xDC00 || utf > 0xDFFF)) { |
1654 1655 nxt_conf_json_parse_error(error, p - 12, 1656 "Invalid JSON encoding sequence. This 12-byte " 1657 "sequence composes an illegal UTF-16 surrogate pair." 1658 ); 1659 1660 return NULL; 1661 } 1662 | 1654 1655 nxt_conf_json_parse_error(error, p - 12, 1656 "Invalid JSON encoding sequence. This 12-byte " 1657 "sequence composes an illegal UTF-16 surrogate pair." 1658 ); 1659 1660 return NULL; 1661 } 1662 |
1663 utf = ((utf_high - 0xd800) << 10) + (utf - 0xdc00) + 0x10000; | 1663 utf = ((utf_high - 0xD800) << 10) + (utf - 0xDC00) + 0x10000; |
1664 1665 break; 1666 } 1667 | 1664 1665 break; 1666 } 1667 |
1668 if (utf < 0xd800 || utf > 0xdfff) { | 1668 if (utf < 0xD800 || utf > 0xDFFF) { |
1669 break; 1670 } 1671 | 1669 break; 1670 } 1671 |
1672 if (utf > 0xdbff || p[0] != '\\' || p[1] != 'u') { | 1672 if (utf > 0xDBFF || p[0] != '\\' || p[1] != 'u') { |
1673 1674 nxt_conf_json_parse_error(error, p - 6, 1675 "Invalid JSON encoding sequence. This 6-byte sequence " 1676 "does not represent a valid UTF character." 1677 ); 1678 1679 return NULL; 1680 } --- 536 unchanged lines hidden (view full) --- 2217 len = size; 2218 2219 while (size) { 2220 ch = *p++; 2221 2222 if (ch == '\\' || ch == '"') { 2223 len++; 2224 | 1673 1674 nxt_conf_json_parse_error(error, p - 6, 1675 "Invalid JSON encoding sequence. This 6-byte sequence " 1676 "does not represent a valid UTF character." 1677 ); 1678 1679 return NULL; 1680 } --- 536 unchanged lines hidden (view full) --- 2217 len = size; 2218 2219 while (size) { 2220 ch = *p++; 2221 2222 if (ch == '\\' || ch == '"') { 2223 len++; 2224 |
2225 } else if (ch <= 0x1f) { | 2225 } else if (ch <= 0x1F) { |
2226 2227 switch (ch) { 2228 case '\n': 2229 case '\r': 2230 case '\t': 2231 case '\b': 2232 case '\f': 2233 len++; --- 14 unchanged lines hidden (view full) --- 2248static u_char * 2249nxt_conf_json_escape(u_char *dst, u_char *src, size_t size) 2250{ 2251 u_char ch; 2252 2253 while (size) { 2254 ch = *src++; 2255 | 2226 2227 switch (ch) { 2228 case '\n': 2229 case '\r': 2230 case '\t': 2231 case '\b': 2232 case '\f': 2233 len++; --- 14 unchanged lines hidden (view full) --- 2248static u_char * 2249nxt_conf_json_escape(u_char *dst, u_char *src, size_t size) 2250{ 2251 u_char ch; 2252 2253 while (size) { 2254 ch = *src++; 2255 |
2256 if (ch > 0x1f) { | 2256 if (ch > 0x1F) { |
2257 2258 if (ch == '\\' || ch == '"') { 2259 *dst++ = '\\'; 2260 } 2261 2262 *dst++ = ch; 2263 2264 } else { --- 19 unchanged lines hidden (view full) --- 2284 case '\f': 2285 *dst++ = 'f'; 2286 break; 2287 2288 default: 2289 *dst++ = 'u'; *dst++ = '0'; *dst++ = '0'; 2290 *dst++ = '0' + (ch >> 4); 2291 | 2257 2258 if (ch == '\\' || ch == '"') { 2259 *dst++ = '\\'; 2260 } 2261 2262 *dst++ = ch; 2263 2264 } else { --- 19 unchanged lines hidden (view full) --- 2284 case '\f': 2285 *dst++ = 'f'; 2286 break; 2287 2288 default: 2289 *dst++ = 'u'; *dst++ = '0'; *dst++ = '0'; 2290 *dst++ = '0' + (ch >> 4); 2291 |
2292 ch &= 0xf; | 2292 ch &= 0xF; |
2293 2294 *dst++ = (ch < 10) ? ('0' + ch) : ('A' + ch - 10); 2295 } 2296 } 2297 2298 size--; 2299 } 2300 --- 31 unchanged lines hidden --- | 2293 2294 *dst++ = (ch < 10) ? ('0' + ch) : ('A' + ch - 10); 2295 } 2296 } 2297 2298 size--; 2299 } 2300 --- 31 unchanged lines hidden --- |