Deleted
Added
nxt_utf8_test.c (384:8f86d3ff3e29) | nxt_utf8_test.c (611:323e11065f83) |
---|---|
1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#include <nxt_main.h> 8#include "nxt_tests.h" 9 10 | 1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#include <nxt_main.h> 8#include "nxt_tests.h" 9 10 |
11#define NXT_UTF8_START_TEST 0xc2 | 11#define NXT_UTF8_START_TEST 0xC2 |
12//#define NXT_UTF8_START_TEST 0 13 14 15static u_char invalid[] = { 16 | 12//#define NXT_UTF8_START_TEST 0 13 14 15static u_char invalid[] = { 16 |
17 /* Invalid first byte less than 0xc2. */ | 17 /* Invalid first byte less than 0xC2. */ |
18 1, 0x80, 0x00, 0x00, 0x00, | 18 1, 0x80, 0x00, 0x00, 0x00, |
19 1, 0xc0, 0x00, 0x00, 0x00, 20 2, 0xc0, 0x00, 0x00, 0x00, 21 3, 0xc0, 0x00, 0x00, 0x00, 22 4, 0xc0, 0x00, 0x00, 0x00, | 19 1, 0xC0, 0x00, 0x00, 0x00, 20 2, 0xC0, 0x00, 0x00, 0x00, 21 3, 0xC0, 0x00, 0x00, 0x00, 22 4, 0xC0, 0x00, 0x00, 0x00, |
23 24 /* Invalid 0x0x110000 value. */ | 23 24 /* Invalid 0x0x110000 value. */ |
25 4, 0xf4, 0x90, 0x80, 0x80, | 25 4, 0xF4, 0x90, 0x80, 0x80, |
26 27 /* Incomplete length. */ | 26 27 /* Incomplete length. */ |
28 2, 0xe0, 0xaf, 0xb5, 0x00, | 28 2, 0xE0, 0xAF, 0xB5, 0x00, |
29 30 /* Overlong values. */ | 29 30 /* Overlong values. */ |
31 2, 0xc0, 0x80, 0x00, 0x00, 32 2, 0xc1, 0xb3, 0x00, 0x00, 33 3, 0xe0, 0x80, 0x80, 0x00, 34 3, 0xe0, 0x81, 0xb3, 0x00, 35 3, 0xe0, 0x90, 0x9a, 0x00, 36 4, 0xf0, 0x80, 0x8a, 0x80, 37 4, 0xf0, 0x80, 0x81, 0xb3, 38 4, 0xf0, 0x80, 0xaf, 0xb5, | 31 2, 0xC0, 0x80, 0x00, 0x00, 32 2, 0xC1, 0xB3, 0x00, 0x00, 33 3, 0xE0, 0x80, 0x80, 0x00, 34 3, 0xE0, 0x81, 0xB3, 0x00, 35 3, 0xE0, 0x90, 0x9A, 0x00, 36 4, 0xF0, 0x80, 0x8A, 0x80, 37 4, 0xF0, 0x80, 0x81, 0xB3, 38 4, 0xF0, 0x80, 0xAF, 0xB5, |
39}; 40 41 42static nxt_int_t 43nxt_utf8_overlong(nxt_thread_t *thr, u_char *overlong, size_t len) 44{ 45 u_char *p, utf8[4]; 46 size_t size; 47 uint32_t u, d; 48 nxt_uint_t i; 49 const u_char *pp; 50 51 pp = overlong; 52 53 d = nxt_utf8_decode(&pp, overlong + len); 54 55 len = pp - overlong; 56 | 39}; 40 41 42static nxt_int_t 43nxt_utf8_overlong(nxt_thread_t *thr, u_char *overlong, size_t len) 44{ 45 u_char *p, utf8[4]; 46 size_t size; 47 uint32_t u, d; 48 nxt_uint_t i; 49 const u_char *pp; 50 51 pp = overlong; 52 53 d = nxt_utf8_decode(&pp, overlong + len); 54 55 len = pp - overlong; 56 |
57 if (d != 0xffffffff) { | 57 if (d != 0xFFFFFFFF) { |
58 p = nxt_utf8_encode(utf8, d); 59 60 size = (p != NULL) ? p - utf8 : 0; 61 62 if (len != size || nxt_memcmp(overlong, utf8, size) != 0) { 63 64 u = 0; 65 for (i = 0; i < len; i++) { --- 57 unchanged lines hidden (view full) --- 123 utf8[1] = invalid[i + 2]; 124 utf8[2] = invalid[i + 3]; 125 utf8[3] = invalid[i + 4]; 126 127 pp = utf8; 128 129 d = nxt_utf8_decode(&pp, utf8 + len); 130 | 58 p = nxt_utf8_encode(utf8, d); 59 60 size = (p != NULL) ? p - utf8 : 0; 61 62 if (len != size || nxt_memcmp(overlong, utf8, size) != 0) { 63 64 u = 0; 65 for (i = 0; i < len; i++) { --- 57 unchanged lines hidden (view full) --- 123 utf8[1] = invalid[i + 2]; 124 utf8[2] = invalid[i + 3]; 125 utf8[3] = invalid[i + 4]; 126 127 pp = utf8; 128 129 d = nxt_utf8_decode(&pp, utf8 + len); 130 |
131 if (d != 0xffffffff) { | 131 if (d != 0xFFFFFFFF) { |
132 133 u = 0; 134 for (i = 0; i < len; i++) { 135 u = (u << 8) + utf8[i]; 136 } 137 138 nxt_log_alert(thr->log, 139 "nxt_utf8_decode(%05uxD, %uz) failed: %05uxD", --- 52 unchanged lines hidden --- | 132 133 u = 0; 134 for (i = 0; i < len; i++) { 135 u = (u << 8) + utf8[i]; 136 } 137 138 nxt_log_alert(thr->log, 139 "nxt_utf8_decode(%05uxD, %uz) failed: %05uxD", --- 52 unchanged lines hidden --- |