| line |
true |
false |
branch |
|
898
|
0 |
0 |
for (; n > 0; n--) |
|
900
|
0 |
0 |
while (*s++ != CHAR_NULL) {}; |
|
901
|
0 |
0 |
if (*s == CHAR_NULL) return "Error text not found (please report)"; |
|
927
|
0 |
0 |
if (newsize > COMPILE_WORK_SIZE_MAX) newsize = COMPILE_WORK_SIZE_MAX; |
|
928
|
0 |
0 |
if (cd->workspace_size >= COMPILE_WORK_SIZE_MAX || |
|
|
0 |
0 |
if (cd->workspace_size >= COMPILE_WORK_SIZE_MAX || |
|
933
|
0 |
0 |
if (newspace == NULL) return ERR21; |
|
936
|
0 |
0 |
if (cd->workspace_size > COMPILE_WORK_SIZE) |
|
963
|
0 |
0 |
if (!IS_DIGIT(*p)) return FALSE; |
|
|
0 |
0 |
if (!IS_DIGIT(*p)) return FALSE; |
|
965
|
0 |
0 |
while (IS_DIGIT(*p)) p++; |
|
|
0 |
0 |
while (IS_DIGIT(*p)) p++; |
|
966
|
0 |
0 |
if (*p == CHAR_RIGHT_CURLY_BRACKET) return TRUE; |
|
968
|
0 |
0 |
if (*p++ != CHAR_COMMA) return FALSE; |
|
969
|
0 |
0 |
if (*p == CHAR_RIGHT_CURLY_BRACKET) return TRUE; |
|
971
|
0 |
0 |
if (!IS_DIGIT(*p)) return FALSE; |
|
|
0 |
0 |
if (!IS_DIGIT(*p)) return FALSE; |
|
973
|
0 |
0 |
while (IS_DIGIT(*p)) p++; |
|
|
0 |
0 |
while (IS_DIGIT(*p)) p++; |
|
1021
|
0 |
104 |
if (c == CHAR_NULL) *errorcodeptr = ERR1; |
|
1029
|
0 |
104 |
else if (c < CHAR_0 || c > CHAR_z) {} |
|
|
0 |
0 |
else if (c < CHAR_0 || c > CHAR_z) {} |
|
1030
|
0 |
0 |
else if ((i = escapes[c - CHAR_0]) != 0) |
|
1031
|
0 |
0 |
{ if (i > 0) c = (pcre_uint32)i; else escape = -i; } |
|
1058
|
0 |
0 |
if ((options & PCRE_JAVASCRIPT_COMPAT) != 0) |
|
1062
|
0 |
0 |
if (MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0 |
|
1064
|
0 |
0 |
&& MAX_255(ptr[3]) && (digitab[ptr[3]] & ctype_xdigit) != 0 |
|
1065
|
0 |
0 |
&& MAX_255(ptr[4]) && (digitab[ptr[4]] & ctype_xdigit) != 0) |
|
|
0 |
0 |
&& MAX_255(ptr[4]) && (digitab[ptr[4]] & ctype_xdigit) != 0) |
|
1068
|
0 |
0 |
for (i = 0; i < 4; ++i) |
|
1072
|
0 |
0 |
if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */ |
|
1073
|
0 |
0 |
c = (c << 4) + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10)); |
|
1081
|
0 |
0 |
if (c > (utf ? 0x10ffffU : 0xffU)) |
|
|
0 |
0 |
if (c > (utf ? 0x10ffffU : 0xffU)) |
|
1090
|
0 |
0 |
else if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; |
|
|
0 |
0 |
else if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; |
|
|
0 |
0 |
else if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; |
|
1099
|
0 |
0 |
if ((options & PCRE_JAVASCRIPT_COMPAT) == 0) *errorcodeptr = ERR37; |
|
1120
|
0 |
0 |
if (isclass) break; |
|
1121
|
0 |
0 |
if (ptr[1] == CHAR_LESS_THAN_SIGN || ptr[1] == CHAR_APOSTROPHE) |
|
|
0 |
0 |
if (ptr[1] == CHAR_LESS_THAN_SIGN || ptr[1] == CHAR_APOSTROPHE) |
|
1129
|
0 |
0 |
if (ptr[1] == CHAR_LEFT_CURLY_BRACKET) |
|
1132
|
0 |
0 |
for (p = ptr+2; *p != CHAR_NULL && *p != CHAR_RIGHT_CURLY_BRACKET; p++) |
|
|
0 |
0 |
for (p = ptr+2; *p != CHAR_NULL && *p != CHAR_RIGHT_CURLY_BRACKET; p++) |
|
1133
|
0 |
0 |
if (*p != CHAR_MINUS && !IS_DIGIT(*p)) break; |
|
|
0 |
0 |
if (*p != CHAR_MINUS && !IS_DIGIT(*p)) break; |
|
|
0 |
0 |
if (*p != CHAR_MINUS && !IS_DIGIT(*p)) break; |
|
1134
|
0 |
0 |
if (*p != CHAR_NULL && *p != CHAR_RIGHT_CURLY_BRACKET) |
|
|
0 |
0 |
if (*p != CHAR_NULL && *p != CHAR_RIGHT_CURLY_BRACKET) |
|
1144
|
0 |
0 |
if (ptr[1] == CHAR_MINUS) |
|
1154
|
0 |
0 |
while (IS_DIGIT(ptr[1])) |
|
|
0 |
0 |
while (IS_DIGIT(ptr[1])) |
|
1156
|
0 |
0 |
if (s > INT_MAX / 10 - 1) /* Integer overflow */ |
|
1163
|
0 |
0 |
if (overflow) /* Integer overflow */ |
|
1165
|
0 |
0 |
while (IS_DIGIT(ptr[1])) |
|
|
0 |
0 |
while (IS_DIGIT(ptr[1])) |
|
1171
|
0 |
0 |
if (braced && *(++ptr) != CHAR_RIGHT_CURLY_BRACKET) |
|
|
0 |
0 |
if (braced && *(++ptr) != CHAR_RIGHT_CURLY_BRACKET) |
|
1177
|
0 |
0 |
if (s == 0) |
|
1183
|
0 |
0 |
if (negated) |
|
1185
|
0 |
0 |
if (s > bracount) |
|
1215
|
0 |
0 |
if (!isclass) |
|
1221
|
0 |
0 |
while (IS_DIGIT(ptr[1])) |
|
|
0 |
0 |
while (IS_DIGIT(ptr[1])) |
|
1223
|
0 |
0 |
if (s > INT_MAX / 10 - 1) /* Integer overflow */ |
|
1230
|
0 |
0 |
if (overflow) /* Integer overflow */ |
|
1232
|
0 |
0 |
while (IS_DIGIT(ptr[1])) |
|
|
0 |
0 |
while (IS_DIGIT(ptr[1])) |
|
1237
|
0 |
0 |
if (s < 8 || s <= bracount) /* Check for back reference */ |
|
|
0 |
0 |
if (s < 8 || s <= bracount) /* Check for back reference */ |
|
1250
|
0 |
0 |
if ((c = *ptr) >= CHAR_8) break; |
|
1262
|
0 |
0 |
while(i++ < 2 && ptr[1] >= CHAR_0 && ptr[1] <= CHAR_7) |
|
|
0 |
0 |
while(i++ < 2 && ptr[1] >= CHAR_0 && ptr[1] <= CHAR_7) |
|
|
0 |
0 |
while(i++ < 2 && ptr[1] >= CHAR_0 && ptr[1] <= CHAR_7) |
|
1265
|
0 |
0 |
if (!utf && c > 0xff) *errorcodeptr = ERR51; |
|
|
0 |
0 |
if (!utf && c > 0xff) *errorcodeptr = ERR51; |
|
1273
|
0 |
0 |
if (ptr[1] != CHAR_LEFT_CURLY_BRACKET) *errorcodeptr = ERR81; else |
|
1274
|
0 |
0 |
if (ptr[2] == CHAR_RIGHT_CURLY_BRACKET) *errorcodeptr = ERR86; else |
|
1279
|
0 |
0 |
while (*ptr >= CHAR_0 && *ptr <= CHAR_7) |
|
|
0 |
0 |
while (*ptr >= CHAR_0 && *ptr <= CHAR_7) |
|
1282
|
0 |
0 |
if (c == 0 && cc == CHAR_0) continue; /* Leading zeroes */ |
|
|
0 |
0 |
if (c == 0 && cc == CHAR_0) continue; /* Leading zeroes */ |
|
1288
|
0 |
0 |
if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; } |
|
|
0 |
0 |
if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; } |
|
1295
|
0 |
0 |
if (overflow) |
|
1297
|
0 |
0 |
while (*ptr >= CHAR_0 && *ptr <= CHAR_7) ptr++; |
|
|
0 |
0 |
while (*ptr >= CHAR_0 && *ptr <= CHAR_7) ptr++; |
|
1300
|
0 |
0 |
else if (*ptr == CHAR_RIGHT_CURLY_BRACKET) |
|
1302
|
0 |
0 |
if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; |
|
|
0 |
0 |
if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; |
|
|
0 |
0 |
if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; |
|
1312
|
0 |
0 |
if ((options & PCRE_JAVASCRIPT_COMPAT) != 0) |
|
1314
|
0 |
0 |
if (MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0 |
|
1315
|
0 |
0 |
&& MAX_255(ptr[2]) && (digitab[ptr[2]] & ctype_xdigit) != 0) |
|
1318
|
0 |
0 |
for (i = 0; i < 2; ++i) |
|
1322
|
0 |
0 |
if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */ |
|
1323
|
0 |
0 |
c = (c << 4) + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10)); |
|
1341
|
0 |
0 |
if (ptr[1] == CHAR_LEFT_CURLY_BRACKET) |
|
1344
|
0 |
0 |
if (*ptr == CHAR_RIGHT_CURLY_BRACKET) |
|
1351
|
0 |
0 |
while (MAX_255(*ptr) && (digitab[*ptr] & ctype_xdigit) != 0) |
|
1354
|
0 |
0 |
if (c == 0 && cc == CHAR_0) continue; /* Leading zeroes */ |
|
|
0 |
0 |
if (c == 0 && cc == CHAR_0) continue; /* Leading zeroes */ |
|
1361
|
0 |
0 |
if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */ |
|
1362
|
0 |
0 |
c = (c << 4) + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10)); |
|
1369
|
0 |
0 |
if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; } |
|
|
0 |
0 |
if (c > (utf ? 0x10ffffU : 0xffU)) { overflow = TRUE; break; } |
|
1377
|
0 |
0 |
if (overflow) |
|
1379
|
0 |
0 |
while (MAX_255(*ptr) && (digitab[*ptr] & ctype_xdigit) != 0) ptr++; |
|
1383
|
0 |
0 |
else if (*ptr == CHAR_RIGHT_CURLY_BRACKET) |
|
1385
|
0 |
0 |
if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; |
|
|
0 |
0 |
if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; |
|
|
0 |
0 |
if (utf && c >= 0xd800 && c <= 0xdfff) *errorcodeptr = ERR73; |
|
1401
|
0 |
0 |
while (i++ < 2 && MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0) |
|
|
0 |
0 |
while (i++ < 2 && MAX_255(ptr[1]) && (digitab[ptr[1]] & ctype_xdigit) != 0) |
|
1406
|
0 |
0 |
if (cc >= CHAR_a) cc -= 32; /* Convert to upper case */ |
|
1407
|
0 |
0 |
c = c * 16 + cc - ((cc < CHAR_A)? CHAR_0 : (CHAR_A - 10)); |
|
1424
|
0 |
0 |
if (c == CHAR_NULL) |
|
1430
|
0 |
0 |
if (c > 127) /* Excludes all non-ASCII in either mode */ |
|
1435
|
0 |
0 |
if (c >= CHAR_a && c <= CHAR_z) c -= 32; |
|
|
0 |
0 |
if (c >= CHAR_a && c <= CHAR_z) c -= 32; |
|
1459
|
0 |
0 |
if ((options & PCRE_EXTRA) != 0) switch(c) |
|
1473
|
0 |
104 |
if (escape == ESC_N && ptr[1] == CHAR_LEFT_CURLY_BRACKET && |
|
1479
|
0 |
104 |
if ((options & PCRE_UCP) != 0 && escape >= ESC_D && escape <= ESC_w) |
|
|
0 |
0 |
if ((options & PCRE_UCP) != 0 && escape >= ESC_D && escape <= ESC_w) |
|
|
0 |
0 |
if ((options & PCRE_UCP) != 0 && escape >= ESC_D && escape <= ESC_w) |
|
1613
|
0 |
0 |
while (IS_DIGIT(*p)) |
|
|
0 |
0 |
while (IS_DIGIT(*p)) |
|
1616
|
0 |
0 |
if (min > 65535) |
|
1623
|
0 |
0 |
if (*p == CHAR_RIGHT_CURLY_BRACKET) max = min; else |
|
1625
|
0 |
0 |
if (*(++p) != CHAR_RIGHT_CURLY_BRACKET) |
|
1628
|
0 |
0 |
while(IS_DIGIT(*p)) |
|
|
0 |
0 |
while(IS_DIGIT(*p)) |
|
1631
|
0 |
0 |
if (max > 65535) |
|
1637
|
0 |
0 |
if (max < min) |
|
1679
|
0 |
0 |
if (!skipassert) return code; |
|
1680
|
0 |
0 |
do code += GET(code, 1); while (*code == OP_ALT); |
|
1686
|
0 |
0 |
if (!skipassert) return code; |
|
1766
|
0 |
0 |
d = find_fixedlength(cc + ((op == OP_CBRA)? IMM2_SIZE : 0), utf, atend, cd, |
|
1768
|
0 |
0 |
if (d < 0) return d; |
|
1770
|
0 |
0 |
do cc += GET(cc, 1); while (*cc == OP_ALT); |
|
1785
|
0 |
0 |
if (length < 0) length = branchlength; |
|
1786
|
0 |
0 |
else if (length != branchlength) return -1; |
|
1787
|
0 |
0 |
if (*cc != OP_ALT) return length; |
|
1797
|
0 |
0 |
if (!atend) return -3; |
|
1799
|
0 |
0 |
do ce += GET(ce, 1); while (*ce == OP_ALT); /* End subpattern */ |
|
1800
|
0 |
0 |
if (cc > cs && cc < ce) return -1; /* Recursion */ |
|
|
0 |
0 |
if (cc > cs && cc < ce) return -1; /* Recursion */ |
|
1804
|
0 |
0 |
for (r = recurses; r != NULL; r = r->prev) if (r->group == cs) break; |
|
|
0 |
0 |
for (r = recurses; r != NULL; r = r->prev) if (r->group == cs) break; |
|
1805
|
0 |
0 |
if (r != NULL) return -1; /* Mutual recursion */ |
|
1810
|
0 |
0 |
if (d < 0) return d; |
|
1821
|
0 |
0 |
do cc += GET(cc, 1); while (*cc == OP_ALT); |
|
1890
|
0 |
0 |
if (cc[1 + IMM2_SIZE] == OP_PROP || cc[1 + IMM2_SIZE] == OP_NOTPROP) |
|
|
0 |
0 |
if (cc[1 + IMM2_SIZE] == OP_PROP || cc[1 + IMM2_SIZE] == OP_NOTPROP) |
|
1956
|
0 |
0 |
if (GET2(cc,1) != GET2(cc,1+IMM2_SIZE)) return -1; |
|
2087
|
0 |
0 |
if (c == OP_END) return NULL; |
|
2093
|
0 |
0 |
if (c == OP_XCLASS) code += GET(code, 1); |
|
2097
|
0 |
0 |
else if (c == OP_REVERSE) |
|
2099
|
0 |
0 |
if (number < 0) return (pcre_uchar *)code; |
|
2105
|
0 |
0 |
else if (c == OP_CBRA || c == OP_SCBRA || |
|
|
0 |
0 |
else if (c == OP_CBRA || c == OP_SCBRA || |
|
|
0 |
0 |
else if (c == OP_CBRA || c == OP_SCBRA || |
|
2106
|
0 |
0 |
c == OP_CBRAPOS || c == OP_SCBRAPOS) |
|
2109
|
0 |
0 |
if (n == number) return (pcre_uchar *)code; |
|
2131
|
0 |
0 |
if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2; |
|
|
0 |
0 |
if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2; |
|
2138
|
0 |
0 |
if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) |
|
|
0 |
0 |
if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) |
|
2249
|
6 |
24 |
if (c == OP_END) return NULL; |
|
2250
|
0 |
24 |
if (c == OP_RECURSE) return code; |
|
2256
|
0 |
24 |
if (c == OP_XCLASS) code += GET(code, 1); |
|
2276
|
0 |
0 |
if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2; |
|
|
0 |
0 |
if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2; |
|
2283
|
0 |
0 |
if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) |
|
|
0 |
0 |
if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) |
|
2403
|
44 |
0 |
for (code = first_significant_code(code + PRIV(OP_lengths)[*code], TRUE); |
|
2414
|
0 |
44 |
if (c == OP_ASSERT) |
|
2416
|
0 |
0 |
do code += GET(code, 1); while (*code == OP_ALT); |
|
2428
|
0 |
44 |
if (c == OP_RECURSE) |
|
2438
|
0 |
0 |
if (cd->start_workspace != NULL) |
|
2441
|
0 |
0 |
for (tcode = cd->start_workspace; tcode < cd->hwm; tcode += LINK_SIZE) |
|
2442
|
0 |
0 |
if ((int)GET(tcode, 0) == (int)(code + 1 - cd->start_code)) return TRUE; |
|
2443
|
0 |
0 |
if (GET(scode, 1) == 0) return TRUE; /* Unclosed */ |
|
2451
|
0 |
0 |
do endgroup += GET(endgroup, 1); while (*endgroup == OP_ALT); |
|
2452
|
0 |
0 |
if (code >= scode && code <= endgroup) continue; /* Simple recursion */ |
|
|
0 |
0 |
if (code >= scode && code <= endgroup) continue; /* Simple recursion */ |
|
2456
|
0 |
0 |
for (r = recurses; r != NULL; r = r->prev) |
|
2457
|
0 |
0 |
if (r->group == scode) break; |
|
2458
|
0 |
0 |
if (r != NULL) continue; /* Mutual recursion */ |
|
2470
|
0 |
0 |
if (could_be_empty_branch(scode, endcode, utf, cd, &this_recurse)) |
|
2477
|
0 |
0 |
while (*scode == OP_ALT); |
|
2479
|
0 |
0 |
if (!empty_branch) return FALSE; /* All branches are non-empty */ |
|
2485
|
44 |
0 |
if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO || |
|
|
44 |
0 |
if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO || |
|
|
44 |
0 |
if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO || |
|
|
0 |
44 |
if (c == OP_BRAZERO || c == OP_BRAMINZERO || c == OP_SKIPZERO || |
|
2489
|
0 |
0 |
do code += GET(code, 1); while (*code == OP_ALT); |
|
2497
|
44 |
0 |
if (c == OP_SBRA || c == OP_SBRAPOS || |
|
|
44 |
0 |
if (c == OP_SBRA || c == OP_SBRAPOS || |
|
|
44 |
0 |
if (c == OP_SBRA || c == OP_SBRAPOS || |
|
2498
|
0 |
44 |
c == OP_SCBRA || c == OP_SCBRAPOS) |
|
2500
|
0 |
0 |
do code += GET(code, 1); while (*code == OP_ALT); |
|
2507
|
44 |
0 |
if (c == OP_BRA || c == OP_BRAPOS || |
|
|
44 |
0 |
if (c == OP_BRA || c == OP_BRAPOS || |
|
|
44 |
0 |
if (c == OP_BRA || c == OP_BRAPOS || |
|
2508
|
44 |
0 |
c == OP_CBRA || c == OP_CBRAPOS || |
|
|
44 |
0 |
c == OP_CBRA || c == OP_CBRAPOS || |
|
2509
|
44 |
0 |
c == OP_ONCE || c == OP_ONCE_NC || |
|
|
44 |
0 |
c == OP_ONCE || c == OP_ONCE_NC || |
|
2510
|
0 |
44 |
c == OP_COND || c == OP_SCOND) |
|
2513
|
0 |
0 |
if (GET(code, 1) == 0) return TRUE; /* Hit unclosed bracket */ |
|
2519
|
0 |
0 |
if (c == OP_COND && code[GET(code, 1)] != OP_ALT) |
|
|
0 |
0 |
if (c == OP_COND && code[GET(code, 1)] != OP_ALT) |
|
2526
|
0 |
0 |
if (!empty_branch && could_be_empty_branch(code, endcode, utf, cd, |
|
|
0 |
0 |
if (!empty_branch && could_be_empty_branch(code, endcode, utf, cd, |
|
2530
|
0 |
0 |
while (*code == OP_ALT); |
|
2531
|
0 |
0 |
if (!empty_branch) return FALSE; /* All branches are non-empty */ |
|
2581
|
0 |
0 |
if (GET2(ccode, 1) > 0) return FALSE; /* Minimum > 0 */ |
|
2650
|
0 |
0 |
if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2; |
|
|
0 |
0 |
if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2; |
|
2658
|
0 |
0 |
if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) |
|
|
0 |
0 |
if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) |
|
2775
|
0 |
0 |
while (bcptr != NULL && bcptr->current_branch >= code) |
|
|
0 |
0 |
while (bcptr != NULL && bcptr->current_branch >= code) |
|
2777
|
0 |
0 |
if (!could_be_empty_branch(bcptr->current_branch, endcode, utf, cd, NULL)) |
|
2800
|
52 |
0 |
return (c > OP_TYPEPOSUPTO)? c : |
|
|
0 |
52 |
return (c > OP_TYPEPOSUPTO)? c : |
|
|
0 |
0 |
return (c > OP_TYPEPOSUPTO)? c : |
|
|
0 |
0 |
return (c > OP_TYPEPOSUPTO)? c : |
|
|
0 |
0 |
return (c > OP_TYPEPOSUPTO)? c : |
|
2935
|
26 |
23 |
if (c >= OP_STAR && c <= OP_TYPEPOSUPTO) |
|
|
26 |
0 |
if (c >= OP_STAR && c <= OP_TYPEPOSUPTO) |
|
2940
|
26 |
0 |
if (c == OP_UPTO || c == OP_MINUPTO || c == OP_EXACT || c == OP_POSUPTO) |
|
|
26 |
0 |
if (c == OP_UPTO || c == OP_MINUPTO || c == OP_EXACT || c == OP_POSUPTO) |
|
|
26 |
0 |
if (c == OP_UPTO || c == OP_MINUPTO || c == OP_EXACT || c == OP_POSUPTO) |
|
|
0 |
26 |
if (c == OP_UPTO || c == OP_MINUPTO || c == OP_EXACT || c == OP_POSUPTO) |
|
2943
|
21 |
5 |
list[1] = (c != OP_PLUS && c != OP_MINPLUS && c != OP_EXACT && c != OP_POSPLUS); |
|
|
21 |
0 |
list[1] = (c != OP_PLUS && c != OP_MINPLUS && c != OP_EXACT && c != OP_POSPLUS); |
|
|
21 |
0 |
list[1] = (c != OP_PLUS && c != OP_MINPLUS && c != OP_EXACT && c != OP_POSPLUS); |
|
|
21 |
0 |
list[1] = (c != OP_PLUS && c != OP_MINPLUS && c != OP_EXACT && c != OP_POSPLUS); |
|
3002
|
0 |
0 |
list[0] = (c == OP_CHARI) ? OP_CHAR : OP_NOT; |
|
3019
|
0 |
0 |
if (chr == list[3]) |
|
3139
|
0 |
26 |
if (*rec_limit == 0) return FALSE; |
|
3156
|
0 |
29 |
if (c == OP_CALLOUT) |
|
3162
|
0 |
29 |
if (c == OP_ALT) |
|
3164
|
0 |
0 |
do code += GET(code, 1); while (*code == OP_ALT); |
|
3183
|
0 |
3 |
if (base_list[1] == 0) return FALSE; |
|
3185
|
0 |
3 |
switch(*(code - GET(code, 1))) |
|
3210
|
0 |
0 |
while (*next_code == OP_ALT) |
|
3212
|
0 |
0 |
if (!compare_opcodes(code, utf, cd, base_list, base_end, rec_limit)) |
|
3225
|
0 |
0 |
if (*next_code != OP_BRA && *next_code != OP_CBRA |
|
|
0 |
0 |
if (*next_code != OP_BRA && *next_code != OP_CBRA |
|
3226
|
0 |
0 |
&& *next_code != OP_ONCE && *next_code != OP_ONCE_NC) return FALSE; |
|
|
0 |
0 |
&& *next_code != OP_ONCE && *next_code != OP_ONCE_NC) return FALSE; |
|
3228
|
0 |
0 |
do next_code += GET(next_code, 1); while (*next_code == OP_ALT); |
|
3233
|
0 |
0 |
if (!compare_opcodes(next_code, utf, cd, base_list, base_end, rec_limit)) |
|
3246
|
0 |
23 |
if (code == NULL) return FALSE; /* Unsupported */ |
|
3251
|
0 |
23 |
if (base_list[0] == OP_CHAR) |
|
3256
|
23 |
0 |
else if (list[0] == OP_CHAR) |
|
3264
|
0 |
0 |
else if (base_list[0] == OP_CLASS || list[0] == OP_CLASS |
|
|
0 |
0 |
else if (base_list[0] == OP_CLASS || list[0] == OP_CLASS |
|
3267
|
0 |
0 |
|| (!utf && (base_list[0] == OP_NCLASS || list[0] == OP_NCLASS)) |
|
|
0 |
0 |
|| (!utf && (base_list[0] == OP_NCLASS || list[0] == OP_NCLASS)) |
|
|
0 |
0 |
|| (!utf && (base_list[0] == OP_NCLASS || list[0] == OP_NCLASS)) |
|
3272
|
0 |
0 |
if (base_list[0] == OP_CLASS || (!utf && base_list[0] == OP_NCLASS)) |
|
|
0 |
0 |
if (base_list[0] == OP_CLASS || (!utf && base_list[0] == OP_NCLASS)) |
|
|
0 |
0 |
if (base_list[0] == OP_CLASS || (!utf && base_list[0] == OP_NCLASS)) |
|
3292
|
0 |
0 |
((list_ptr == list ? code : base_end) - list_ptr[2]); |
|
3338
|
0 |
0 |
if (invert_bits) |
|
3342
|
0 |
0 |
if ((*set1++ & ~(*set2++)) != 0) return FALSE; |
|
3344
|
0 |
0 |
while (set1 < set_end); |
|
3350
|
0 |
0 |
if ((*set1++ & *set2++) != 0) return FALSE; |
|
3352
|
0 |
0 |
while (set1 < set_end); |
|
3355
|
0 |
0 |
if (list[1] == 0) return TRUE; |
|
3475
|
0 |
0 |
accepted = leftop >= FIRST_AUTOTAB_OP && leftop <= LAST_AUTOTAB_LEFT_OP && |
|
|
0 |
0 |
accepted = leftop >= FIRST_AUTOTAB_OP && leftop <= LAST_AUTOTAB_LEFT_OP && |
|
3476
|
0 |
0 |
rightop >= FIRST_AUTOTAB_OP && rightop <= LAST_AUTOTAB_RIGHT_OP && |
|
|
0 |
0 |
rightop >= FIRST_AUTOTAB_OP && rightop <= LAST_AUTOTAB_RIGHT_OP && |
|
|
0 |
0 |
rightop >= FIRST_AUTOTAB_OP && rightop <= LAST_AUTOTAB_RIGHT_OP && |
|
3479
|
0 |
0 |
if (!accepted) return FALSE; |
|
3481
|
0 |
0 |
if (list[1] == 0) return TRUE; |
|
3499
|
0 |
0 |
if (chr == *ochr_ptr) return FALSE; |
|
3502
|
0 |
0 |
while(*ochr_ptr != NOTACHAR); |
|
3509
|
0 |
0 |
if (chr == *ochr_ptr) |
|
3513
|
0 |
0 |
while(*ochr_ptr != NOTACHAR); |
|
3514
|
0 |
0 |
if (*ochr_ptr == NOTACHAR) return FALSE; /* Not found */ |
|
3521
|
0 |
0 |
if (chr < 256 && (cd->ctypes[chr] & ctype_digit) != 0) return FALSE; |
|
|
0 |
0 |
if (chr < 256 && (cd->ctypes[chr] & ctype_digit) != 0) return FALSE; |
|
3525
|
0 |
0 |
if (chr > 255 || (cd->ctypes[chr] & ctype_digit) == 0) return FALSE; |
|
|
0 |
0 |
if (chr > 255 || (cd->ctypes[chr] & ctype_digit) == 0) return FALSE; |
|
3529
|
0 |
0 |
if (chr < 256 && (cd->ctypes[chr] & ctype_space) != 0) return FALSE; |
|
|
0 |
0 |
if (chr < 256 && (cd->ctypes[chr] & ctype_space) != 0) return FALSE; |
|
3533
|
0 |
0 |
if (chr > 255 || (cd->ctypes[chr] & ctype_space) == 0) return FALSE; |
|
|
0 |
0 |
if (chr > 255 || (cd->ctypes[chr] & ctype_space) == 0) return FALSE; |
|
3537
|
0 |
0 |
if (chr < 255 && (cd->ctypes[chr] & ctype_word) != 0) return FALSE; |
|
|
0 |
0 |
if (chr < 255 && (cd->ctypes[chr] & ctype_word) != 0) return FALSE; |
|
3541
|
0 |
0 |
if (chr > 255 || (cd->ctypes[chr] & ctype_word) == 0) return FALSE; |
|
|
0 |
0 |
if (chr > 255 || (cd->ctypes[chr] & ctype_word) == 0) return FALSE; |
|
3545
|
0 |
0 |
switch(chr) |
|
3553
|
0 |
0 |
switch(chr) |
|
3562
|
0 |
0 |
switch(chr) |
|
3570
|
0 |
0 |
switch(chr) |
|
3579
|
0 |
0 |
switch (chr) |
|
3607
|
0 |
0 |
if (chr > 255) return FALSE; |
|
3611
|
0 |
0 |
if (chr > 255) break; |
|
3613
|
0 |
0 |
((list_ptr == list ? code : base_end) - list_ptr[2]); |
|
3614
|
0 |
0 |
if ((class_bitset[chr >> 3] & (1 << (chr & 7))) != 0) return FALSE; |
|
3630
|
0 |
0 |
while(*chr_ptr != NOTACHAR); |
|
3634
|
0 |
0 |
if (list[1] == 0) return TRUE; |
|
3678
|
0 |
533 |
if (c >= OP_TABLE_LENGTH) return; |
|
3680
|
97 |
436 |
if (c >= OP_STAR && c <= OP_TYPEPOSUPTO) |
|
|
26 |
71 |
if (c >= OP_STAR && c <= OP_TYPEPOSUPTO) |
|
3684
|
26 |
0 |
get_chr_property_list(code, utf, cd->fcc, list) : NULL; |
|
3685
|
5 |
21 |
list[1] = c == OP_STAR || c == OP_PLUS || c == OP_QUERY || c == OP_UPTO; |
|
|
0 |
5 |
list[1] = c == OP_STAR || c == OP_PLUS || c == OP_QUERY || c == OP_UPTO; |
|
|
0 |
0 |
list[1] = c == OP_STAR || c == OP_PLUS || c == OP_QUERY || c == OP_UPTO; |
|
|
0 |
0 |
list[1] = c == OP_STAR || c == OP_PLUS || c == OP_QUERY || c == OP_UPTO; |
|
3688
|
26 |
0 |
if (end != NULL && compare_opcodes(end, utf, cd, list, end, &rec_limit)) |
|
|
3 |
23 |
if (end != NULL && compare_opcodes(end, utf, cd, list, end, &rec_limit)) |
|
3727
|
507 |
0 |
else if (c == OP_CLASS || c == OP_NCLASS || c == OP_XCLASS) |
|
|
507 |
0 |
else if (c == OP_CLASS || c == OP_NCLASS || c == OP_XCLASS) |
|
|
0 |
507 |
else if (c == OP_CLASS || c == OP_NCLASS || c == OP_XCLASS) |
|
3737
|
0 |
0 |
if (c >= OP_CRSTAR && c <= OP_CRMINRANGE) |
|
|
0 |
0 |
if (c >= OP_CRSTAR && c <= OP_CRMINRANGE) |
|
3745
|
0 |
0 |
if (compare_opcodes(end, utf, cd, list, end, &rec_limit)) |
|
3788
|
26 |
0 |
if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2; |
|
|
0 |
26 |
if (code[1] == OP_PROP || code[1] == OP_NOTPROP) code += 2; |
|
3795
|
0 |
0 |
if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) |
|
|
0 |
0 |
if (code[1 + IMM2_SIZE] == OP_PROP || code[1 + IMM2_SIZE] == OP_NOTPROP) |
|
3938
|
0 |
0 |
for (++ptr; *ptr != CHAR_NULL; ptr++) |
|
3940
|
0 |
0 |
if (*ptr == CHAR_BACKSLASH && |
|
|
0 |
0 |
if (*ptr == CHAR_BACKSLASH && |
|
3941
|
0 |
0 |
(ptr[1] == CHAR_RIGHT_SQUARE_BRACKET || |
|
3944
|
0 |
0 |
else if ((*ptr == CHAR_LEFT_SQUARE_BRACKET && ptr[1] == terminator) || |
|
|
0 |
0 |
else if ((*ptr == CHAR_LEFT_SQUARE_BRACKET && ptr[1] == terminator) || |
|
|
0 |
0 |
else if ((*ptr == CHAR_LEFT_SQUARE_BRACKET && ptr[1] == terminator) || |
|
3946
|
0 |
0 |
else if (*ptr == terminator && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET) |
|
|
0 |
0 |
else if (*ptr == terminator && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET) |
|
3977
|
0 |
0 |
while (posix_name_lengths[yield] != 0) |
|
3979
|
0 |
0 |
if (len == posix_name_lengths[yield] && |
|
|
0 |
0 |
if (len == posix_name_lengths[yield] && |
|
4028
|
0 |
6 |
while ((ptr = (pcre_uchar *)find_recurse(ptr, utf)) != NULL) |
|
4030
|
0 |
0 |
for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; hc < cd->hwm; |
|
4034
|
0 |
0 |
if (cd->start_code + offset == ptr + 1) break; |
|
4040
|
0 |
0 |
if (hc >= cd->hwm) |
|
4043
|
0 |
0 |
if (cd->start_code + offset >= group) PUT(ptr, 1, offset + adjust); |
|
4051
|
0 |
6 |
for (hc = (pcre_uchar *)cd->start_workspace + save_hwm_offset; hc < cd->hwm; |
|
4219
|
0 |
0 |
if ((options & PCRE_CASELESS) != 0) |
|
4259
|
0 |
0 |
for (c = start; c <= classbits_end; c++) |
|
4274
|
0 |
0 |
if (end > 0xff) end = 0xff; |
|
4286
|
0 |
0 |
for (c = start; c <= classbits_end; c++) |
|
4375
|
0 |
0 |
while (p[0] < NOTACHAR) |
|
4378
|
0 |
0 |
if (p[0] != except) |
|
4380
|
0 |
0 |
while(p[n+1] == p[0] + n + 1) n++; |
|
4414
|
0 |
0 |
if (p[0] > 0) |
|
4416
|
0 |
0 |
while (p[0] < NOTACHAR) |
|
4418
|
0 |
0 |
while (p[1] == p[0] + 1) p++; |
|
4419
|
0 |
0 |
n8 += add_to_class(classbits, uchardptr, options, cd, p[0] + 1, |
|
4420
|
0 |
0 |
(p[1] == NOTACHAR) ? (utf ? 0x10ffffu : 0xffffffffu) : p[1] - 1); |
|
4586
|
62 |
932 |
if (c == CHAR_NULL && nestptr != NULL) |
|
|
0 |
62 |
if (c == CHAR_NULL && nestptr != NULL) |
|
4596
|
497 |
497 |
if (lengthptr != NULL) |
|
4601
|
0 |
497 |
if (code > cd->start_workspace + cd->workspace_size - |
|
4605
|
0 |
0 |
ERR52 : ERR87; |
|
4615
|
0 |
497 |
if (code < last_code) code = last_code; |
|
4619
|
0 |
497 |
if (OFLOW_MAX - *lengthptr < code - last_code) |
|
4633
|
418 |
79 |
if (previous != NULL) |
|
4635
|
363 |
55 |
if (previous > orig_code) |
|
4653
|
0 |
497 |
else if (cd->hwm > cd->start_workspace + cd->workspace_size) |
|
4662
|
932 |
62 |
if (c != CHAR_NULL) |
|
4664
|
104 |
828 |
if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E) |
|
|
0 |
104 |
if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E) |
|
4670
|
0 |
932 |
else if (inescq) |
|
4672
|
0 |
0 |
if (previous_callout != NULL) |
|
4674
|
0 |
0 |
if (lengthptr == NULL) /* Don't attempt in pre-compile phase */ |
|
4678
|
0 |
0 |
if ((options & PCRE_AUTO_CALLOUT) != 0) |
|
4690
|
104 |
828 |
if (c == CHAR_BACKSLASH && ptr[1] == CHAR_Q) |
|
|
0 |
104 |
if (c == CHAR_BACKSLASH && ptr[1] == CHAR_Q) |
|
4700
|
0 |
994 |
if ((options & PCRE_EXTENDED) != 0) |
|
4703
|
0 |
0 |
while (MAX_255(c) && (cd->ctypes[c] & ctype_space) != 0) c = *(++ptr); |
|
4704
|
0 |
0 |
if (c == CHAR_NUMBER_SIGN) |
|
4707
|
0 |
0 |
while (*ptr != CHAR_NULL) |
|
4709
|
0 |
0 |
if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(ptr)) /* For non-fixed-length newline cases, */ |
|
4724
|
0 |
0 |
if (ptr > wscptr) goto REDO_LOOP; |
|
4731
|
6 |
988 |
if (c == CHAR_LEFT_PARENTHESIS && ptr[1] == CHAR_QUESTION_MARK && |
|
|
0 |
6 |
if (c == CHAR_LEFT_PARENTHESIS && ptr[1] == CHAR_QUESTION_MARK && |
|
|
0 |
0 |
if (c == CHAR_LEFT_PARENTHESIS && ptr[1] == CHAR_QUESTION_MARK && |
|
4735
|
0 |
0 |
while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; |
|
|
0 |
0 |
while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; |
|
4736
|
0 |
0 |
if (*ptr == CHAR_NULL) |
|
4747
|
952 |
42 |
c == CHAR_ASTERISK || c == CHAR_PLUS || c == CHAR_QUESTION_MARK || |
|
|
942 |
10 |
c == CHAR_ASTERISK || c == CHAR_PLUS || c == CHAR_QUESTION_MARK || |
|
|
936 |
6 |
c == CHAR_ASTERISK || c == CHAR_PLUS || c == CHAR_QUESTION_MARK || |
|
|
0 |
936 |
c == CHAR_ASTERISK || c == CHAR_PLUS || c == CHAR_QUESTION_MARK || |
|
4748
|
0 |
0 |
(c == CHAR_LEFT_CURLY_BRACKET && is_counted_repeat(ptr+1)); |
|
4753
|
936 |
58 |
if (!is_quantifier && previous_callout != NULL && nestptr == NULL && |
|
|
0 |
936 |
if (!is_quantifier && previous_callout != NULL && nestptr == NULL && |
|
|
0 |
0 |
if (!is_quantifier && previous_callout != NULL && nestptr == NULL && |
|
|
0 |
0 |
if (!is_quantifier && previous_callout != NULL && nestptr == NULL && |
|
4756
|
0 |
0 |
if (lengthptr == NULL) /* Don't attempt in pre-compile phase */ |
|
4764
|
0 |
994 |
if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier && nestptr == NULL) |
|
|
0 |
0 |
if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier && nestptr == NULL) |
|
|
0 |
0 |
if ((options & PCRE_AUTO_CALLOUT) != 0 && !is_quantifier && nestptr == NULL) |
|
4784
|
34 |
34 |
if (lengthptr != NULL) |
|
4786
|
0 |
34 |
if (OFLOW_MAX - *lengthptr < code - last_code) |
|
4803
|
0 |
16 |
if ((options & PCRE_MULTILINE) != 0) |
|
4805
|
0 |
0 |
if (firstcharflags == REQ_UNSET) |
|
4814
|
0 |
16 |
*code++ = ((options & PCRE_MULTILINE) != 0)? OP_DOLLM : OP_DOLL; |
|
4821
|
0 |
52 |
if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; |
|
4828
|
0 |
52 |
*code++ = ((options & PCRE_DOTALL) != 0)? OP_ALLANY: OP_ANY; |
|
4848
|
0 |
0 |
if ((cd->external_options & PCRE_JAVASCRIPT_COMPAT) != 0) |
|
4862
|
0 |
0 |
if (STRNCMP_UC_C8(ptr+1, STRING_WEIRD_STARTWORD, 6) == 0) |
|
4869
|
0 |
0 |
if (STRNCMP_UC_C8(ptr+1, STRING_WEIRD_ENDWORD, 6) == 0) |
|
4884
|
0 |
0 |
if ((ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || |
|
|
0 |
0 |
if ((ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || |
|
|
0 |
0 |
if ((ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || |
|
4885
|
0 |
0 |
ptr[1] == CHAR_EQUALS_SIGN) && |
|
4888
|
0 |
0 |
*errorcodeptr = (ptr[1] == CHAR_COLON)? ERR13 : ERR31; |
|
4900
|
0 |
0 |
if (c == CHAR_BACKSLASH) |
|
4902
|
0 |
0 |
if (ptr[1] == CHAR_E) |
|
4904
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr + 1, STR_Q STR_BACKSLASH STR_E, 3) == 0) |
|
4909
|
0 |
0 |
else if (!negate_class && c == CHAR_CIRCUMFLEX_ACCENT) |
|
|
0 |
0 |
else if (!negate_class && c == CHAR_CIRCUMFLEX_ACCENT) |
|
4919
|
0 |
0 |
if (c == CHAR_RIGHT_SQUARE_BRACKET && |
|
|
0 |
0 |
if (c == CHAR_RIGHT_SQUARE_BRACKET && |
|
4922
|
0 |
0 |
*code++ = negate_class? OP_ALLANY : OP_FAIL; |
|
4923
|
0 |
0 |
if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; |
|
4967
|
0 |
0 |
if (c != CHAR_NULL) do |
|
4996
|
0 |
0 |
if (inescq) |
|
4998
|
0 |
0 |
if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E) /* If we are at \E */ |
|
|
0 |
0 |
if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E) /* If we are at \E */ |
|
5013
|
0 |
0 |
if (c == CHAR_LEFT_SQUARE_BRACKET && |
|
|
0 |
0 |
if (c == CHAR_LEFT_SQUARE_BRACKET && |
|
5014
|
0 |
0 |
(ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || |
|
|
0 |
0 |
(ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || |
|
5015
|
0 |
0 |
ptr[1] == CHAR_EQUALS_SIGN) && check_posix_syntax(ptr, &tempptr)) |
|
5022
|
0 |
0 |
if (ptr[1] != CHAR_COLON) |
|
5029
|
0 |
0 |
if (*ptr == CHAR_CIRCUMFLEX_ACCENT) |
|
5037
|
0 |
0 |
if (posix_class < 0) |
|
5047
|
0 |
0 |
if ((options & PCRE_CASELESS) != 0 && posix_class <= 2) |
|
|
0 |
0 |
if ((options & PCRE_CASELESS) != 0 && posix_class <= 2) |
|
5135
|
0 |
0 |
if (taboffset >= 0) |
|
5137
|
0 |
0 |
if (tabopt >= 0) |
|
5138
|
0 |
0 |
for (c = 0; c < 32; c++) pbits[c] |= cbits[c + taboffset]; |
|
5140
|
0 |
0 |
for (c = 0; c < 32; c++) pbits[c] &= ~cbits[c + taboffset]; |
|
5146
|
0 |
0 |
if (tabopt < 0) tabopt = -tabopt; |
|
5147
|
0 |
0 |
if (tabopt == 1) pbits[1] &= ~0x3c; |
|
5148
|
0 |
0 |
else if (tabopt == 2) pbits[11] &= 0x7f; |
|
5153
|
0 |
0 |
if (local_negate) |
|
5154
|
0 |
0 |
for (c = 0; c < 32; c++) classbits[c] |= ~pbits[c]; |
|
5156
|
0 |
0 |
for (c = 0; c < 32; c++) classbits[c] |= pbits[c]; |
|
5175
|
0 |
0 |
if (c == CHAR_BACKSLASH) |
|
5179
|
0 |
0 |
if (*errorcodeptr != 0) goto FAILED; |
|
5180
|
0 |
0 |
if (escape == 0) c = ec; |
|
5181
|
0 |
0 |
else if (escape == ESC_b) c = CHAR_BS; /* \b is backspace in a class */ |
|
5182
|
0 |
0 |
else if (escape == ESC_N) /* \N is not supported in a class */ |
|
5187
|
0 |
0 |
else if (escape == ESC_Q) /* Handle start of quoted string */ |
|
5189
|
0 |
0 |
if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E) |
|
|
0 |
0 |
if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E) |
|
5196
|
0 |
0 |
else if (escape == ESC_E) continue; /* Ignore orphan \E */ |
|
5221
|
0 |
0 |
for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_digit]; |
|
5226
|
0 |
0 |
for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_digit]; |
|
5230
|
0 |
0 |
for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_word]; |
|
5235
|
0 |
0 |
for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_word]; |
|
5246
|
0 |
0 |
for (c = 0; c < 32; c++) classbits[c] |= cbits[c+cbit_space]; |
|
5251
|
0 |
0 |
for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_space]; |
|
5301
|
0 |
0 |
if ((options & PCRE_EXTRA) != 0) |
|
5326
|
0 |
0 |
while (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E) |
|
|
0 |
0 |
while (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E) |
|
5335
|
0 |
0 |
if (c == CHAR_CR || c == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF; |
|
|
0 |
0 |
if (c == CHAR_CR || c == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF; |
|
5339
|
0 |
0 |
if (!inescq && ptr[1] == CHAR_MINUS) |
|
|
0 |
0 |
if (!inescq && ptr[1] == CHAR_MINUS) |
|
5343
|
0 |
0 |
while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E) ptr += 2; |
|
|
0 |
0 |
while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E) ptr += 2; |
|
5348
|
0 |
0 |
while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_Q) |
|
|
0 |
0 |
while (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_Q) |
|
5351
|
0 |
0 |
if (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E) |
|
|
0 |
0 |
if (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_E) |
|
5360
|
0 |
0 |
if (*ptr == CHAR_NULL || (!inescq && *ptr == CHAR_RIGHT_SQUARE_BRACKET)) |
|
|
0 |
0 |
if (*ptr == CHAR_NULL || (!inescq && *ptr == CHAR_RIGHT_SQUARE_BRACKET)) |
|
|
0 |
0 |
if (*ptr == CHAR_NULL || (!inescq && *ptr == CHAR_RIGHT_SQUARE_BRACKET)) |
|
5383
|
0 |
0 |
if (!inescq) |
|
5385
|
0 |
0 |
if (d == CHAR_BACKSLASH) |
|
5389
|
0 |
0 |
if (*errorcodeptr != 0) goto FAILED; |
|
5394
|
0 |
0 |
if (descape != 0) |
|
5396
|
0 |
0 |
if (descape == ESC_b) d = CHAR_BS; else |
|
5406
|
0 |
0 |
else if (d == CHAR_LEFT_SQUARE_BRACKET && |
|
|
0 |
0 |
else if (d == CHAR_LEFT_SQUARE_BRACKET && |
|
5407
|
0 |
0 |
(ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || |
|
|
0 |
0 |
(ptr[1] == CHAR_COLON || ptr[1] == CHAR_DOT || |
|
5408
|
0 |
0 |
ptr[1] == CHAR_EQUALS_SIGN) && |
|
5419
|
0 |
0 |
if (d < c) |
|
5424
|
0 |
0 |
if (d == c) goto CLASS_SINGLE_CHARACTER; /* A few lines below */ |
|
5434
|
0 |
0 |
if (d == CHAR_CR || d == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF; |
|
|
0 |
0 |
if (d == CHAR_CR || d == CHAR_NL) cd->external_flags |= PCRE_HASCRORLF; |
|
5449
|
0 |
0 |
if (class_one_char < 2) class_one_char++; |
|
5460
|
0 |
0 |
if (!inescq && |
|
|
0 |
0 |
if (!inescq && |
|
5464
|
0 |
0 |
class_one_char == 1 && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET) |
|
5470
|
0 |
0 |
if (negate_class) |
|
5475
|
0 |
0 |
if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; |
|
5496
|
0 |
0 |
*code++ = ((options & PCRE_CASELESS) != 0)? OP_NOTI: OP_NOT; |
|
5536
|
0 |
0 |
while (((c = *(++ptr)) != CHAR_NULL || |
|
5537
|
0 |
0 |
(nestptr != NULL && |
|
5538
|
0 |
0 |
(ptr = nestptr, nestptr = NULL, c = *(++ptr)) != CHAR_NULL)) && |
|
5539
|
0 |
0 |
(c != CHAR_RIGHT_SQUARE_BRACKET || inescq)); |
|
|
0 |
0 |
(c != CHAR_RIGHT_SQUARE_BRACKET || inescq)); |
|
5543
|
0 |
0 |
if (c == CHAR_NULL) |
|
5565
|
0 |
0 |
if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; |
|
5655
|
0 |
0 |
*code++ = (negate_class == should_flip_negation) ? OP_CLASS : OP_NCLASS; |
|
5656
|
0 |
0 |
if (lengthptr == NULL) /* Save time in the pre-compile phase */ |
|
5658
|
0 |
0 |
if (negate_class) |
|
5659
|
0 |
0 |
for (c = 0; c < 32; c++) classbits[c] = ~classbits[c]; |
|
5673
|
0 |
0 |
if (!is_quantifier) goto NORMAL_CHAR; |
|
5675
|
0 |
0 |
if (*errorcodeptr != 0) goto FAILED; |
|
5693
|
0 |
58 |
if (previous == NULL) |
|
5699
|
48 |
10 |
if (repeat_min == 0) |
|
5709
|
0 |
58 |
reqvary = (repeat_min == repeat_max)? 0 : REQ_VARY; |
|
5723
|
0 |
58 |
if ((options & PCRE_EXTENDED) != 0) |
|
5728
|
0 |
0 |
while (MAX_255(*p) && (cd->ctypes[*p] & ctype_space) != 0) p++; |
|
5729
|
0 |
0 |
if (*p != CHAR_NUMBER_SIGN) break; |
|
5731
|
0 |
0 |
while (*p != CHAR_NULL) |
|
5733
|
0 |
0 |
if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */ |
|
|
0 |
0 |
if (IS_NEWLINE(p)) /* For non-fixed-length newline cases, */ |
|
5750
|
0 |
58 |
if (ptr[1] == CHAR_LEFT_PARENTHESIS && ptr[2] == CHAR_QUESTION_MARK && |
|
|
0 |
0 |
if (ptr[1] == CHAR_LEFT_PARENTHESIS && ptr[2] == CHAR_QUESTION_MARK && |
|
|
0 |
0 |
if (ptr[1] == CHAR_LEFT_PARENTHESIS && ptr[2] == CHAR_QUESTION_MARK && |
|
5754
|
0 |
0 |
while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; |
|
|
0 |
0 |
while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; |
|
5755
|
0 |
0 |
if (*ptr == CHAR_NULL) |
|
5768
|
0 |
58 |
if (ptr[1] == CHAR_PLUS) |
|
5774
|
0 |
58 |
else if (ptr[1] == CHAR_QUESTION_MARK) |
|
5787
|
0 |
58 |
if (*previous == OP_RECURSE) |
|
5800
|
0 |
0 |
if (lengthptr == NULL && cd->hwm >= cd->start_workspace + LINK_SIZE) |
|
|
0 |
0 |
if (lengthptr == NULL && cd->hwm >= cd->start_workspace + LINK_SIZE) |
|
5803
|
0 |
0 |
if (offset == previous + 1 - cd->start_code) |
|
5816
|
58 |
0 |
if (*previous == OP_CHAR || *previous == OP_CHARI |
|
|
58 |
0 |
if (*previous == OP_CHAR || *previous == OP_CHARI |
|
5817
|
58 |
0 |
|| *previous == OP_NOT || *previous == OP_NOTI) |
|
|
0 |
58 |
|| *previous == OP_NOT || *previous == OP_NOTI) |
|
5849
|
0 |
0 |
if (*previous <= OP_CHARI && repeat_min > 1) |
|
|
0 |
0 |
if (*previous <= OP_CHARI && repeat_min > 1) |
|
5866
|
52 |
6 |
else if (*previous < OP_EODN) |
|
5874
|
52 |
0 |
if (*previous == OP_PROP || *previous == OP_NOTPROP) |
|
|
0 |
52 |
if (*previous == OP_PROP || *previous == OP_NOTPROP) |
|
5887
|
0 |
52 |
if (repeat_max == 0) goto END_REPEAT; |
|
5896
|
42 |
10 |
if (repeat_min == 0) |
|
5898
|
42 |
0 |
if (repeat_max == -1) *code++ = OP_STAR + repeat_type; |
|
5899
|
0 |
0 |
else if (repeat_max == 1) *code++ = OP_QUERY + repeat_type; |
|
5912
|
10 |
0 |
else if (repeat_min == 1) |
|
5914
|
10 |
0 |
if (repeat_max == -1) |
|
5919
|
0 |
0 |
if (repeat_max == 1) goto END_REPEAT; |
|
5939
|
0 |
0 |
if (repeat_max < 0) |
|
5951
|
0 |
0 |
if (prop_type >= 0) |
|
5964
|
0 |
0 |
else if (repeat_max != repeat_min) |
|
5975
|
0 |
0 |
if (prop_type >= 0) |
|
5982
|
0 |
0 |
if (repeat_max == 1) |
|
6021
|
6 |
0 |
else if (*previous == OP_CLASS || *previous == OP_NCLASS || |
|
|
6 |
0 |
else if (*previous == OP_CLASS || *previous == OP_NCLASS || |
|
|
6 |
0 |
else if (*previous == OP_CLASS || *previous == OP_NCLASS || |
|
6025
|
6 |
0 |
*previous == OP_REF || *previous == OP_REFI || |
|
|
6 |
0 |
*previous == OP_REF || *previous == OP_REFI || |
|
6026
|
0 |
6 |
*previous == OP_DNREF || *previous == OP_DNREFI) |
|
6028
|
0 |
0 |
if (repeat_max == 0) |
|
6034
|
0 |
0 |
if (repeat_min == 0 && repeat_max == -1) |
|
|
0 |
0 |
if (repeat_min == 0 && repeat_max == -1) |
|
6036
|
0 |
0 |
else if (repeat_min == 1 && repeat_max == -1) |
|
|
0 |
0 |
else if (repeat_min == 1 && repeat_max == -1) |
|
6038
|
0 |
0 |
else if (repeat_min == 0 && repeat_max == 1) |
|
|
0 |
0 |
else if (repeat_min == 0 && repeat_max == 1) |
|
6044
|
0 |
0 |
if (repeat_max == -1) repeat_max = 0; /* 2-byte encoding for max */ |
|
6058
|
6 |
0 |
else if (*previous >= OP_ASSERT && *previous <= OP_COND) |
|
|
6 |
0 |
else if (*previous >= OP_ASSERT && *previous <= OP_COND) |
|
6069
|
0 |
6 |
if (*previous == OP_COND && previous[LINK_SIZE+1] == OP_DEF) |
|
|
0 |
0 |
if (*previous == OP_COND && previous[LINK_SIZE+1] == OP_DEF) |
|
6077
|
0 |
6 |
if (*previous < OP_ONCE) /* Assertion */ |
|
6079
|
0 |
0 |
if (repeat_min > 0) goto END_REPEAT; |
|
6080
|
0 |
0 |
if (repeat_max < 0 || repeat_max > 1) repeat_max = 1; |
|
|
0 |
0 |
if (repeat_max < 0 || repeat_max > 1) repeat_max = 1; |
|
6090
|
6 |
0 |
if (repeat_min == 0) |
|
6114
|
6 |
0 |
if (repeat_max <= 1) /* Covers 0, 1, and unlimited */ |
|
6120
|
0 |
6 |
if (repeat_max == 0) |
|
6150
|
0 |
0 |
offset = (bralink == NULL)? 0 : (int)(previous - bralink); |
|
6167
|
0 |
0 |
if (repeat_min > 1) |
|
6174
|
0 |
0 |
if (lengthptr != NULL) |
|
6177
|
0 |
0 |
if ((INT64_OR_DOUBLE)(repeat_min - 1)* |
|
6179
|
0 |
0 |
(INT64_OR_DOUBLE)INT_MAX || |
|
6195
|
0 |
0 |
if (groupsetfirstchar && reqcharflags < 0) |
|
|
0 |
0 |
if (groupsetfirstchar && reqcharflags < 0) |
|
6201
|
0 |
0 |
for (i = 1; i < repeat_min; i++) |
|
6207
|
0 |
0 |
while (cd->hwm > cd->start_workspace + cd->workspace_size - |
|
6212
|
0 |
0 |
if (*errorcodeptr != 0) goto FAILED; |
|
6215
|
0 |
0 |
for (hc = (pcre_uchar *)cd->start_workspace + base_hwm_offset; |
|
6228
|
0 |
0 |
if (repeat_max > 0) repeat_max -= repeat_min; |
|
6238
|
6 |
0 |
if (repeat_max >= 0) |
|
6247
|
3 |
3 |
if (lengthptr != NULL && repeat_max > 0) |
|
|
0 |
3 |
if (lengthptr != NULL && repeat_max > 0) |
|
6251
|
0 |
0 |
if ((INT64_OR_DOUBLE)repeat_max * |
|
6253
|
0 |
0 |
> (INT64_OR_DOUBLE)INT_MAX || |
|
6264
|
0 |
6 |
else for (i = repeat_max - 1; i >= 0; i--) |
|
6274
|
0 |
0 |
if (i != 0) |
|
6278
|
0 |
0 |
offset = (bralink == NULL)? 0 : (int)(code - bralink); |
|
6288
|
0 |
0 |
while (cd->hwm > cd->start_workspace + cd->workspace_size - |
|
6293
|
0 |
0 |
if (*errorcodeptr != 0) goto FAILED; |
|
6296
|
0 |
0 |
for (hc = (pcre_uchar *)cd->start_workspace + base_hwm_offset; |
|
6300
|
0 |
0 |
PUT(cd->hwm, 0, GET(hc, 0) + len + ((i != 0)? 2+LINK_SIZE : 1)); |
|
|
0 |
0 |
PUT(cd->hwm, 0, GET(hc, 0) + len + ((i != 0)? 2+LINK_SIZE : 1)); |
|
6310
|
0 |
6 |
while (bralink != NULL) |
|
6316
|
0 |
0 |
bralink = (oldlinkoffset == 0)? NULL : bralink - oldlinkoffset; |
|
6355
|
0 |
0 |
if ((*bracode == OP_ONCE || *bracode == OP_ONCE_NC) && |
|
|
0 |
0 |
if ((*bracode == OP_ONCE || *bracode == OP_ONCE_NC) && |
|
|
0 |
0 |
if ((*bracode == OP_ONCE || *bracode == OP_ONCE_NC) && |
|
6361
|
0 |
0 |
if (*bracode == OP_ONCE || *bracode == OP_ONCE_NC) |
|
|
0 |
0 |
if (*bracode == OP_ONCE || *bracode == OP_ONCE_NC) |
|
6371
|
0 |
0 |
if (lengthptr == NULL) |
|
6376
|
0 |
0 |
if (could_be_empty_branch(scode, ketcode, utf, cd, NULL)) |
|
6383
|
0 |
0 |
while (*scode == OP_ALT); |
|
6389
|
0 |
0 |
if (*bracode == OP_COND && bracode[GET(bracode,1)] != OP_ALT) |
|
|
0 |
0 |
if (*bracode == OP_COND && bracode[GET(bracode,1)] != OP_ALT) |
|
6394
|
0 |
0 |
if (possessive_quantifier) |
|
6401
|
0 |
0 |
if (*bracode == OP_COND || *bracode == OP_SCOND) |
|
|
0 |
0 |
if (*bracode == OP_COND || *bracode == OP_SCOND) |
|
6409
|
0 |
0 |
*bracode = (*bracode == OP_COND)? OP_BRAPOS : OP_SBRAPOS; |
|
6426
|
0 |
0 |
if (brazeroptr != NULL) *brazeroptr = OP_BRAPOSZERO; |
|
6427
|
0 |
0 |
if (repeat_min < 2) possessive_quantifier = FALSE; |
|
6442
|
0 |
0 |
else if (*previous == OP_FAIL) goto END_REPEAT; |
|
6464
|
0 |
58 |
if (possessive_quantifier) |
|
6479
|
0 |
0 |
|| tempcode[1 + IMM2_SIZE] == OP_NOTPROP)? 2 : 0); |
|
|
0 |
0 |
|| tempcode[1 + IMM2_SIZE] == OP_NOTPROP)? 2 : 0); |
|
6521
|
0 |
0 |
if (len > 0) |
|
6529
|
0 |
0 |
if (repcode < OP_CALLOUT && opcode_possessify[repcode] > 0) |
|
|
0 |
0 |
if (repcode < OP_CALLOUT && opcode_possessify[repcode] > 0) |
|
6621
|
0 |
6 |
if (ptr[0] == CHAR_ASTERISK && (ptr[1] == ':' |
|
|
0 |
0 |
if (ptr[0] == CHAR_ASTERISK && (ptr[1] == ':' |
|
6622
|
0 |
0 |
|| (MAX_255(ptr[1]) && ((cd->ctypes[ptr[1]] & ctype_letter) != 0)))) |
|
6631
|
0 |
0 |
while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_letter) != 0) ptr++; |
|
6638
|
0 |
0 |
if (*ptr == CHAR_COLON) |
|
6641
|
0 |
0 |
while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; |
|
|
0 |
0 |
while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; |
|
6643
|
0 |
0 |
if ((unsigned int)arglen > MAX_MARK) |
|
6650
|
0 |
0 |
if (*ptr != CHAR_RIGHT_PARENTHESIS) |
|
6658
|
0 |
0 |
for (i = 0; i < verbcount; i++) |
|
6660
|
0 |
0 |
if (namelen == verbs[i].len && |
|
|
0 |
0 |
if (namelen == verbs[i].len && |
|
6668
|
0 |
0 |
if (verbs[i].op == OP_ACCEPT) |
|
6671
|
0 |
0 |
if (arglen != 0) |
|
6677
|
0 |
0 |
for (oc = cd->open_caps; oc != NULL; oc = oc->next) |
|
6679
|
0 |
0 |
if (lengthptr != NULL) |
|
6695
|
0 |
0 |
setverb = *code++ = |
|
6699
|
0 |
0 |
if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; |
|
6704
|
0 |
0 |
else if (arglen == 0) |
|
6706
|
0 |
0 |
if (verbs[i].op < 0) /* Argument is mandatory */ |
|
6716
|
0 |
0 |
if (verbs[i].op_arg < 0) /* Argument is forbidden */ |
|
6722
|
0 |
0 |
if (lengthptr != NULL) /* In pass 1 just add in the length */ |
|
6757
|
0 |
0 |
if (i < verbcount) continue; /* Successfully handled a verb */ |
|
6773
|
0 |
6 |
if (*ptr == CHAR_QUESTION_MARK) |
|
6817
|
0 |
0 |
if (ptr[1] == CHAR_QUESTION_MARK && ptr[2] == CHAR_C) |
|
|
0 |
0 |
if (ptr[1] == CHAR_QUESTION_MARK && ptr[2] == CHAR_C) |
|
6819
|
0 |
0 |
for (i = 3;; i++) if (!IS_DIGIT(ptr[i])) break; |
|
|
0 |
0 |
for (i = 3;; i++) if (!IS_DIGIT(ptr[i])) break; |
|
6820
|
0 |
0 |
if (ptr[i] == CHAR_RIGHT_PARENTHESIS) |
|
6826
|
0 |
0 |
if (*tempptr != CHAR_LEFT_PARENTHESIS) |
|
6837
|
0 |
0 |
if (tempptr[1] == CHAR_QUESTION_MARK && |
|
|
0 |
0 |
if (tempptr[1] == CHAR_QUESTION_MARK && |
|
6838
|
0 |
0 |
(tempptr[2] == CHAR_EQUALS_SIGN || |
|
6839
|
0 |
0 |
tempptr[2] == CHAR_EXCLAMATION_MARK || |
|
6840
|
0 |
0 |
(tempptr[2] == CHAR_LESS_THAN_SIGN && |
|
6841
|
0 |
0 |
(tempptr[3] == CHAR_EQUALS_SIGN || |
|
6861
|
0 |
0 |
if (*ptr == CHAR_R && ptr[1] == CHAR_AMPERSAND) |
|
|
0 |
0 |
if (*ptr == CHAR_R && ptr[1] == CHAR_AMPERSAND) |
|
6872
|
0 |
0 |
else if (*ptr == CHAR_LESS_THAN_SIGN) |
|
6877
|
0 |
0 |
else if (*ptr == CHAR_APOSTROPHE) |
|
6885
|
0 |
0 |
if (*ptr == CHAR_MINUS || *ptr == CHAR_PLUS) refsign = *ptr++; |
|
|
0 |
0 |
if (*ptr == CHAR_MINUS || *ptr == CHAR_PLUS) refsign = *ptr++; |
|
6886
|
0 |
0 |
else if (IS_DIGIT(*ptr)) refsign = 0; |
|
|
0 |
0 |
else if (IS_DIGIT(*ptr)) refsign = 0; |
|
6891
|
0 |
0 |
if (refsign >= 0) |
|
6893
|
0 |
0 |
while (IS_DIGIT(*ptr)) |
|
|
0 |
0 |
while (IS_DIGIT(*ptr)) |
|
6895
|
0 |
0 |
if (recno > INT_MAX / 10 - 1) /* Integer overflow */ |
|
6897
|
0 |
0 |
while (IS_DIGIT(*ptr)) ptr++; |
|
|
0 |
0 |
while (IS_DIGIT(*ptr)) ptr++; |
|
6913
|
0 |
0 |
if (IS_DIGIT(*ptr)) |
|
|
0 |
0 |
if (IS_DIGIT(*ptr)) |
|
6918
|
0 |
0 |
if (!MAX_255(*ptr) || (cd->ctypes[*ptr] & ctype_word) == 0) |
|
6924
|
0 |
0 |
while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_word) != 0) |
|
6929
|
0 |
0 |
if (lengthptr != NULL) skipbytes += IMM2_SIZE; |
|
6934
|
0 |
0 |
if ((terminator > 0 && *ptr++ != (pcre_uchar)terminator) || |
|
|
0 |
0 |
if ((terminator > 0 && *ptr++ != (pcre_uchar)terminator) || |
|
|
0 |
0 |
if ((terminator > 0 && *ptr++ != (pcre_uchar)terminator) || |
|
6944
|
0 |
0 |
if (lengthptr != NULL) break; |
|
6950
|
0 |
0 |
if (refsign >= 0) |
|
6952
|
0 |
0 |
if (recno <= 0) |
|
6957
|
0 |
0 |
if (refsign != 0) recno = (refsign == CHAR_MINUS)? |
|
|
0 |
0 |
if (refsign != 0) recno = (refsign == CHAR_MINUS)? |
|
6959
|
0 |
0 |
if (recno <= 0 || recno > cd->final_bracount) |
|
|
0 |
0 |
if (recno <= 0 || recno > cd->final_bracount) |
|
6965
|
0 |
0 |
if (recno > cd->top_backref) cd->top_backref = recno; |
|
6972
|
0 |
0 |
for (i = 0; i < cd->names_found; i++) |
|
6974
|
0 |
0 |
if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) == 0 && |
|
|
0 |
0 |
if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) == 0 && |
|
6984
|
0 |
0 |
if (i < cd->names_found) |
|
6989
|
0 |
0 |
if (recno > cd->top_backref) cd->top_backref = recno; |
|
6990
|
0 |
0 |
for (; i < cd->names_found; i++) |
|
6993
|
0 |
0 |
if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) != 0 || |
|
|
0 |
0 |
if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) != 0 || |
|
6998
|
0 |
0 |
if (count > 1) |
|
7017
|
0 |
0 |
else if (terminator != CHAR_NULL) |
|
7026
|
0 |
0 |
else if (*name == CHAR_R) |
|
7029
|
0 |
0 |
for (i = 1; i < namelen; i++) |
|
7031
|
0 |
0 |
if (!IS_DIGIT(name[i])) |
|
|
0 |
0 |
if (!IS_DIGIT(name[i])) |
|
7036
|
0 |
0 |
if (recno > INT_MAX / 10 - 1) /* Integer overflow */ |
|
7043
|
0 |
0 |
if (recno == 0) recno = RREF_ANY; |
|
7051
|
0 |
0 |
else if (namelen == 6 && STRNCMP_UC_C8(name, STRING_DEFINE, 6) == 0) |
|
|
0 |
0 |
else if (namelen == 6 && STRNCMP_UC_C8(name, STRING_DEFINE, 6) == 0) |
|
7083
|
0 |
0 |
if (*ptr == CHAR_RIGHT_PARENTHESIS && ptr[1] != CHAR_ASTERISK && |
|
|
0 |
0 |
if (*ptr == CHAR_RIGHT_PARENTHESIS && ptr[1] != CHAR_ASTERISK && |
|
|
0 |
0 |
if (*ptr == CHAR_RIGHT_PARENTHESIS && ptr[1] != CHAR_ASTERISK && |
|
7084
|
0 |
0 |
ptr[1] != CHAR_PLUS && ptr[1] != CHAR_QUESTION_MARK && |
|
|
0 |
0 |
ptr[1] != CHAR_PLUS && ptr[1] != CHAR_QUESTION_MARK && |
|
7085
|
0 |
0 |
(ptr[1] != CHAR_LEFT_CURLY_BRACKET || !is_counted_repeat(ptr+2))) |
|
7113
|
0 |
0 |
if (MAX_255(ptr[1]) && (cd->ctypes[ptr[1]] & ctype_word) != 0) |
|
7137
|
0 |
0 |
while(IS_DIGIT(*ptr)) |
|
|
0 |
0 |
while(IS_DIGIT(*ptr)) |
|
7139
|
0 |
0 |
if (*ptr != CHAR_RIGHT_PARENTHESIS) |
|
7144
|
0 |
0 |
if (n > 255) |
|
7160
|
0 |
0 |
if (*(++ptr) == CHAR_EQUALS_SIGN || |
|
|
0 |
0 |
if (*(++ptr) == CHAR_EQUALS_SIGN || |
|
7167
|
0 |
0 |
else if (*ptr != CHAR_LESS_THAN_SIGN) /* Test for Python-style defn */ |
|
7179
|
0 |
0 |
CHAR_GREATER_THAN_SIGN : CHAR_APOSTROPHE; |
|
7181
|
0 |
0 |
if (IS_DIGIT(*ptr)) |
|
|
0 |
0 |
if (IS_DIGIT(*ptr)) |
|
7186
|
0 |
0 |
while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_word) != 0) ptr++; |
|
7195
|
0 |
0 |
if (lengthptr != NULL) |
|
7200
|
0 |
0 |
if (*ptr != (pcre_uchar)terminator) |
|
7206
|
0 |
0 |
if (cd->names_found >= MAX_NAME_COUNT) |
|
7212
|
0 |
0 |
if (namelen + IMM2_SIZE + 1 > cd->name_entry_size) |
|
7215
|
0 |
0 |
if (namelen > MAX_NAME_SIZE) |
|
7230
|
0 |
0 |
for (i = 0; i < cd->names_found; i++, ng++) |
|
7232
|
0 |
0 |
if (namelen == ng->length && |
|
|
0 |
0 |
if (namelen == ng->length && |
|
7235
|
0 |
0 |
if (ng->number == number) break; |
|
7236
|
0 |
0 |
if ((options & PCRE_DUPNAMES) == 0) |
|
7243
|
0 |
0 |
else if (ng->number == number) |
|
7250
|
0 |
0 |
if (i >= cd->names_found) /* Not a duplicate with same number */ |
|
7254
|
0 |
0 |
if (cd->names_found >= cd->named_group_list_size) |
|
7260
|
0 |
0 |
if (newspace == NULL) |
|
7268
|
0 |
0 |
if (cd->named_group_list_size > NAMED_GROUP_LIST_SIZE) |
|
7299
|
0 |
0 |
if (IS_DIGIT(*ptr)) |
|
|
0 |
0 |
if (IS_DIGIT(*ptr)) |
|
7304
|
0 |
0 |
while (MAX_255(*ptr) && (cd->ctypes[*ptr] & ctype_word) != 0) ptr++; |
|
7314
|
0 |
0 |
if (lengthptr != NULL) |
|
7319
|
0 |
0 |
if (namelen == 0) |
|
7324
|
0 |
0 |
if (*ptr != (pcre_uchar)terminator) |
|
7329
|
0 |
0 |
if (namelen > MAX_NAME_SIZE) |
|
7337
|
0 |
0 |
if (!is_recurse) cd->namedrefcount++; |
|
7365
|
0 |
0 |
if (cd->dupgroups) *lengthptr += 4 + 4*LINK_SIZE; |
|
7380
|
0 |
0 |
for (i = 0; i < cd->names_found; i++, ng++) |
|
7382
|
0 |
0 |
if (namelen == ng->length && |
|
|
0 |
0 |
if (namelen == ng->length && |
|
7387
|
0 |
0 |
if (is_recurse) break; |
|
7388
|
0 |
0 |
for (oc = cd->open_caps; oc != NULL; oc = oc->next) |
|
7390
|
0 |
0 |
if (oc->number == recno) |
|
7409
|
0 |
0 |
for (i = 0; i < cd->names_found; i++) |
|
7411
|
0 |
0 |
if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) == 0 && |
|
|
0 |
0 |
if (STRNCMP_UC_UC(name, slot+IMM2_SIZE, namelen) == 0 && |
|
7417
|
0 |
0 |
if (i < cd->names_found) |
|
7431
|
0 |
0 |
if (is_recurse) goto HANDLE_RECURSION; |
|
7436
|
0 |
0 |
if (lengthptr == NULL && cd->dupnames) |
|
|
0 |
0 |
if (lengthptr == NULL && cd->dupnames) |
|
7442
|
0 |
0 |
for (i++; i < cd->names_found; i++) |
|
7444
|
0 |
0 |
if (STRCMP_UC_UC(slot + IMM2_SIZE, cslot + IMM2_SIZE) != 0) break; |
|
7449
|
0 |
0 |
if (count > 1) |
|
7451
|
0 |
0 |
if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; |
|
7454
|
0 |
0 |
*code++ = ((options & PCRE_CASELESS) != 0)? OP_DNREFI : OP_DNREF; |
|
7460
|
0 |
0 |
for (; slot < cslot; slot += cd->name_entry_size) |
|
7464
|
0 |
0 |
cd->backref_map |= (recno < 32)? (1 << recno) : 1; |
|
7465
|
0 |
0 |
if (recno > cd->top_backref) cd->top_backref = recno; |
|
7471
|
0 |
0 |
for (oc = cd->open_caps; oc != NULL; oc = oc->next) |
|
7473
|
0 |
0 |
if (oc->number == recno) |
|
7493
|
0 |
0 |
if (*(++ptr) != CHAR_RIGHT_PARENTHESIS) |
|
7517
|
0 |
0 |
if ((refsign = *ptr) == CHAR_PLUS) |
|
7520
|
0 |
0 |
if (!IS_DIGIT(*ptr)) |
|
|
0 |
0 |
if (!IS_DIGIT(*ptr)) |
|
7526
|
0 |
0 |
else if (refsign == CHAR_MINUS) |
|
7528
|
0 |
0 |
if (!IS_DIGIT(ptr[1])) |
|
|
0 |
0 |
if (!IS_DIGIT(ptr[1])) |
|
7534
|
0 |
0 |
while(IS_DIGIT(*ptr)) |
|
|
0 |
0 |
while(IS_DIGIT(*ptr)) |
|
7536
|
0 |
0 |
if (recno > INT_MAX / 10 - 1) /* Integer overflow */ |
|
7538
|
0 |
0 |
while (IS_DIGIT(*ptr)) ptr++; |
|
|
0 |
0 |
while (IS_DIGIT(*ptr)) ptr++; |
|
7545
|
0 |
0 |
if (*ptr != (pcre_uchar)terminator) |
|
7551
|
0 |
0 |
if (refsign == CHAR_MINUS) |
|
7553
|
0 |
0 |
if (recno == 0) |
|
7559
|
0 |
0 |
if (recno <= 0) |
|
7565
|
0 |
0 |
else if (refsign == CHAR_PLUS) |
|
7567
|
0 |
0 |
if (recno == 0) |
|
7590
|
0 |
0 |
if (lengthptr == NULL) |
|
7593
|
0 |
0 |
if (recno != 0) |
|
7598
|
0 |
0 |
if (called == NULL) |
|
7600
|
0 |
0 |
if (recno > cd->final_bracount) |
|
7611
|
0 |
0 |
if (cd->hwm >= cd->start_workspace + cd->workspace_size - |
|
7615
|
0 |
0 |
if (*errorcodeptr != 0) goto FAILED; |
|
7629
|
0 |
0 |
else if (GET(called, 1) == 0 && cond_depth <= 0 && |
|
7649
|
0 |
0 |
if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE; |
|
7659
|
0 |
0 |
while (*ptr != CHAR_RIGHT_PARENTHESIS && *ptr != CHAR_COLON) |
|
|
0 |
0 |
while (*ptr != CHAR_RIGHT_PARENTHESIS && *ptr != CHAR_COLON) |
|
7692
|
0 |
0 |
if (*ptr == CHAR_RIGHT_PARENTHESIS) |
|
7720
|
0 |
6 |
else if ((options & PCRE_NO_AUTO_CAPTURE) != 0) |
|
7738
|
0 |
6 |
if ((cd->parens_depth += 1) > PARENS_NEST_LIMIT) |
|
7752
|
6 |
0 |
if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT && |
|
|
0 |
6 |
if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT && |
|
|
0 |
0 |
if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT && |
|
7770
|
3 |
3 |
if (!compile_regex( |
|
|
6 |
0 |
if (!compile_regex( |
|
|
0 |
6 |
if (!compile_regex( |
|
|
0 |
6 |
if (!compile_regex( |
|
7797
|
0 |
6 |
if (bravalue == OP_ONCE && cd->bracount <= tempbracount) |
|
|
0 |
0 |
if (bravalue == OP_ONCE && cd->bracount <= tempbracount) |
|
7800
|
6 |
0 |
if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT) |
|
|
0 |
6 |
if (bravalue >= OP_ASSERT && bravalue <= OP_ASSERTBACK_NOT) |
|
7812
|
0 |
6 |
if (bravalue == OP_COND && lengthptr == NULL) |
|
|
0 |
0 |
if (bravalue == OP_COND && lengthptr == NULL) |
|
7821
|
0 |
0 |
while (*tc != OP_KET); |
|
7826
|
0 |
0 |
if (code[LINK_SIZE+1] == OP_DEF) |
|
7828
|
0 |
0 |
if (condcount > 1) |
|
7842
|
0 |
0 |
if (condcount > 2) |
|
7847
|
0 |
0 |
if (condcount == 1) subfirstcharflags = subreqcharflags = REQ_NONE; |
|
7853
|
0 |
6 |
if (*ptr != CHAR_RIGHT_PARENTHESIS) |
|
7864
|
3 |
3 |
if (lengthptr != NULL) |
|
7866
|
0 |
3 |
if (OFLOW_MAX - *lengthptr < length_prevgroup - 2 - 2*LINK_SIZE) |
|
7886
|
0 |
3 |
if (bravalue == OP_DEF) break; |
|
7901
|
3 |
0 |
if (bravalue >= OP_ONCE) |
|
7909
|
0 |
3 |
if (firstcharflags == REQ_UNSET) |
|
7911
|
0 |
0 |
if (subfirstcharflags >= 0) |
|
7925
|
3 |
0 |
else if (subfirstcharflags >= 0 && subreqcharflags < 0) |
|
|
0 |
3 |
else if (subfirstcharflags >= 0 && subreqcharflags < 0) |
|
7934
|
3 |
0 |
if (subreqcharflags >= 0) |
|
7950
|
0 |
0 |
else if (bravalue == OP_ASSERT && subreqcharflags >= 0 && |
|
|
0 |
0 |
else if (bravalue == OP_ASSERT && subreqcharflags >= 0 && |
|
|
0 |
0 |
else if (bravalue == OP_ASSERT && subreqcharflags >= 0 && |
|
7971
|
0 |
104 |
if (*errorcodeptr != 0) goto FAILED; |
|
7973
|
104 |
0 |
if (escape == 0) /* The escape coded a single character */ |
|
7980
|
0 |
0 |
if (firstcharflags == REQ_UNSET && escape > ESC_b && escape < ESC_Z) |
|
|
0 |
0 |
if (firstcharflags == REQ_UNSET && escape > ESC_b && escape < ESC_Z) |
|
|
0 |
0 |
if (firstcharflags == REQ_UNSET && escape > ESC_b && escape < ESC_Z) |
|
7997
|
0 |
0 |
if (escape == ESC_g) |
|
8004
|
0 |
0 |
CHAR_GREATER_THAN_SIGN : CHAR_APOSTROPHE; |
|
8017
|
0 |
0 |
if (cf != CHAR_PLUS && cf != CHAR_MINUS && !IS_DIGIT(cf)) |
|
|
0 |
0 |
if (cf != CHAR_PLUS && cf != CHAR_MINUS && !IS_DIGIT(cf)) |
|
|
0 |
0 |
if (cf != CHAR_PLUS && cf != CHAR_MINUS && !IS_DIGIT(cf)) |
|
|
0 |
0 |
if (cf != CHAR_PLUS && cf != CHAR_MINUS && !IS_DIGIT(cf)) |
|
8027
|
0 |
0 |
while (IS_DIGIT(*p)) p++; |
|
|
0 |
0 |
while (IS_DIGIT(*p)) p++; |
|
8028
|
0 |
0 |
if (*p != (pcre_uchar)terminator) |
|
8040
|
0 |
0 |
if (escape == ESC_k) |
|
8042
|
0 |
0 |
if ((ptr[1] != CHAR_LESS_THAN_SIGN && |
|
|
0 |
0 |
if ((ptr[1] != CHAR_LESS_THAN_SIGN && |
|
8043
|
0 |
0 |
ptr[1] != CHAR_APOSTROPHE && ptr[1] != CHAR_LEFT_CURLY_BRACKET)) |
|
8050
|
0 |
0 |
CHAR_GREATER_THAN_SIGN : (*ptr == CHAR_APOSTROPHE)? |
|
8051
|
0 |
0 |
CHAR_APOSTROPHE : CHAR_RIGHT_CURLY_BRACKET; |
|
8059
|
0 |
0 |
if (escape < 0) |
|
8068
|
0 |
0 |
if (firstcharflags == REQ_UNSET) zerofirstcharflags = firstcharflags = REQ_NONE; |
|
8071
|
0 |
0 |
*code++ = ((options & PCRE_CASELESS) != 0)? OP_REFI : OP_REF; |
|
8073
|
0 |
0 |
cd->backref_map |= (recno < 32)? (1 << recno) : 1; |
|
8074
|
0 |
0 |
if (recno > cd->top_backref) cd->top_backref = recno; |
|
8080
|
0 |
0 |
for (oc = cd->open_caps; oc != NULL; oc = oc->next) |
|
8082
|
0 |
0 |
if (oc->number == recno) |
|
8110
|
0 |
0 |
else if (escape == ESC_X || escape == ESC_P || escape == ESC_p) |
|
|
0 |
0 |
else if (escape == ESC_X || escape == ESC_P || escape == ESC_p) |
|
|
0 |
0 |
else if (escape == ESC_X || escape == ESC_P || escape == ESC_p) |
|
8125
|
0 |
0 |
if ((escape == ESC_b || escape == ESC_B || escape == ESC_A) && |
|
|
0 |
0 |
if ((escape == ESC_b || escape == ESC_B || escape == ESC_A) && |
|
|
0 |
0 |
if ((escape == ESC_b || escape == ESC_B || escape == ESC_A) && |
|
|
0 |
0 |
if ((escape == ESC_b || escape == ESC_B || escape == ESC_A) && |
|
8140
|
0 |
0 |
previous = (escape > ESC_b && escape < ESC_Z)? code : NULL; |
|
|
0 |
0 |
previous = (escape > ESC_b && escape < ESC_Z)? code : NULL; |
|
8142
|
0 |
0 |
*code++ = (!utf && escape == ESC_C)? OP_ALLANY : escape; |
|
|
0 |
0 |
*code++ = (!utf && escape == ESC_C)? OP_ALLANY : escape; |
|
8209
|
0 |
778 |
*code++ = ((options & PCRE_CASELESS) != 0)? OP_CHARI : OP_CHAR; |
|
8210
|
778 |
778 |
for (c = 0; c < mclength; c++) *code++ = mcbuffer[c]; |
|
8214
|
778 |
0 |
if (mcbuffer[0] == CHAR_CR || mcbuffer[0] == CHAR_NL) |
|
|
0 |
778 |
if (mcbuffer[0] == CHAR_CR || mcbuffer[0] == CHAR_NL) |
|
8222
|
58 |
720 |
if (firstcharflags == REQ_UNSET) |
|
8231
|
0 |
58 |
if (mclength == 1 || req_caseopt == 0) |
|
|
0 |
0 |
if (mclength == 1 || req_caseopt == 0) |
|
8236
|
0 |
58 |
if (mclength != 1) |
|
8254
|
0 |
720 |
if (mclength == 1 || req_caseopt == 0) |
|
|
0 |
0 |
if (mclength == 1 || req_caseopt == 0) |
|
8336
|
0 |
68 |
if (PUBL(stack_guard) != NULL && PUBL(stack_guard)()) |
|
|
0 |
0 |
if (PUBL(stack_guard) != NULL && PUBL(stack_guard)()) |
|
8372
|
6 |
62 |
if (*code == OP_CBRA) |
|
8394
|
0 |
68 |
if (reset_bracount) cd->bracount = orig_bracount; |
|
8398
|
0 |
68 |
if (lookbehind) |
|
8409
|
34 |
34 |
if (!compile_branch(&options, &code, &ptr, errorcodeptr, &branchfirstchar, |
|
|
0 |
68 |
if (!compile_branch(&options, &code, &ptr, errorcodeptr, &branchfirstchar, |
|
8420
|
6 |
62 |
if (cd->bracount > max_bracount) max_bracount = cd->bracount; |
|
8424
|
34 |
34 |
if (lengthptr == NULL) |
|
8429
|
34 |
0 |
if (*last_branch != OP_ALT) |
|
8448
|
0 |
0 |
if (firstcharflags >= 0 && |
|
|
0 |
0 |
if (firstcharflags >= 0 && |
|
8449
|
0 |
0 |
(firstcharflags != branchfirstcharflags || firstchar != branchfirstchar)) |
|
8451
|
0 |
0 |
if (reqcharflags < 0) |
|
8462
|
0 |
0 |
if (firstcharflags < 0 && branchfirstcharflags >= 0 && branchreqcharflags < 0) |
|
|
0 |
0 |
if (firstcharflags < 0 && branchfirstcharflags >= 0 && branchreqcharflags < 0) |
|
|
0 |
0 |
if (firstcharflags < 0 && branchfirstcharflags >= 0 && branchreqcharflags < 0) |
|
8470
|
0 |
0 |
if (((reqcharflags & ~REQ_VARY) != (branchreqcharflags & ~REQ_VARY)) || |
|
|
0 |
0 |
if (((reqcharflags & ~REQ_VARY) != (branchreqcharflags & ~REQ_VARY)) || |
|
8488
|
0 |
34 |
if (lookbehind) |
|
8495
|
0 |
0 |
if (fixed_length == -3) |
|
8499
|
0 |
0 |
else if (fixed_length < 0) |
|
8501
|
0 |
0 |
*errorcodeptr = (fixed_length == -2)? ERR36 : |
|
8502
|
0 |
0 |
(fixed_length == -4)? ERR70: ERR25; |
|
8508
|
0 |
0 |
if (fixed_length > cd->max_lookbehind) |
|
8522
|
68 |
0 |
if (*ptr != CHAR_VERTICAL_LINE) |
|
8524
|
34 |
34 |
if (lengthptr == NULL) |
|
8534
|
0 |
34 |
while (branch_length > 0); |
|
8548
|
6 |
62 |
if (capnumber > 0) |
|
8550
|
0 |
6 |
if (cd->open_caps->flag) |
|
8580
|
34 |
34 |
if (lengthptr != NULL) |
|
8582
|
0 |
34 |
if (OFLOW_MAX - *lengthptr < length) |
|
8601
|
0 |
0 |
if (lengthptr != NULL) |
|
8674
|
31 |
0 |
if (op == OP_BRA || op == OP_BRAPOS || |
|
|
31 |
0 |
if (op == OP_BRA || op == OP_BRAPOS || |
|
|
31 |
0 |
if (op == OP_BRA || op == OP_BRAPOS || |
|
8675
|
0 |
31 |
op == OP_SBRA || op == OP_SBRAPOS) |
|
8677
|
0 |
0 |
if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE; |
|
8682
|
31 |
0 |
else if (op == OP_CBRA || op == OP_CBRAPOS || |
|
|
31 |
0 |
else if (op == OP_CBRA || op == OP_CBRAPOS || |
|
|
31 |
0 |
else if (op == OP_CBRA || op == OP_CBRAPOS || |
|
8683
|
0 |
31 |
op == OP_SCBRA || op == OP_SCBRAPOS) |
|
8686
|
0 |
0 |
int new_map = bracket_map | ((n < 32)? (1 << n) : 1); |
|
8687
|
0 |
0 |
if (!is_anchored(scode, new_map, cd, atomcount)) return FALSE; |
|
8692
|
31 |
0 |
else if (op == OP_ASSERT || op == OP_COND) |
|
|
0 |
31 |
else if (op == OP_ASSERT || op == OP_COND) |
|
8694
|
0 |
0 |
if (!is_anchored(scode, bracket_map, cd, atomcount)) return FALSE; |
|
8699
|
31 |
0 |
else if (op == OP_ONCE || op == OP_ONCE_NC) |
|
|
0 |
31 |
else if (op == OP_ONCE || op == OP_ONCE_NC) |
|
8701
|
0 |
0 |
if (!is_anchored(scode, bracket_map, cd, atomcount + 1)) |
|
8709
|
31 |
0 |
else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR || |
|
|
31 |
0 |
else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR || |
|
|
0 |
31 |
else if ((op == OP_TYPESTAR || op == OP_TYPEMINSTAR || |
|
8712
|
0 |
0 |
if (scode[1] != OP_ALLANY || (bracket_map & cd->backref_map) != 0 || |
|
|
0 |
0 |
if (scode[1] != OP_ALLANY || (bracket_map & cd->backref_map) != 0 || |
|
|
0 |
0 |
if (scode[1] != OP_ALLANY || (bracket_map & cd->backref_map) != 0 || |
|
8713
|
0 |
0 |
atomcount > 0 || cd->had_pruneorskip) |
|
8719
|
31 |
0 |
else if (op != OP_SOD && op != OP_SOM && op != OP_CIRC) return FALSE; |
|
|
31 |
0 |
else if (op != OP_SOD && op != OP_SOM && op != OP_CIRC) return FALSE; |
|
|
26 |
5 |
else if (op != OP_SOD && op != OP_SOM && op != OP_CIRC) return FALSE; |
|
8723
|
0 |
5 |
while (*code == OP_ALT); /* Loop for each alternative */ |
|
8768
|
0 |
3 |
if (op == OP_COND) |
|
8771
|
0 |
0 |
if (*scode == OP_CALLOUT) scode += PRIV(OP_lengths)[OP_CALLOUT]; |
|
8772
|
0 |
0 |
switch (*scode) |
|
8783
|
0 |
0 |
if (!is_startline(scode, bracket_map, cd, atomcount, TRUE)) return FALSE; |
|
8784
|
0 |
0 |
do scode += GET(scode, 1); while (*scode == OP_ALT); |
|
8794
|
3 |
0 |
if (op == OP_BRA || op == OP_BRAPOS || |
|
|
3 |
0 |
if (op == OP_BRA || op == OP_BRAPOS || |
|
|
3 |
0 |
if (op == OP_BRA || op == OP_BRAPOS || |
|
8795
|
0 |
3 |
op == OP_SBRA || op == OP_SBRAPOS) |
|
8797
|
0 |
0 |
if (!is_startline(scode, bracket_map, cd, atomcount, inassert)) return FALSE; |
|
8802
|
3 |
0 |
else if (op == OP_CBRA || op == OP_CBRAPOS || |
|
|
3 |
0 |
else if (op == OP_CBRA || op == OP_CBRAPOS || |
|
|
3 |
0 |
else if (op == OP_CBRA || op == OP_CBRAPOS || |
|
8803
|
0 |
3 |
op == OP_SCBRA || op == OP_SCBRAPOS) |
|
8806
|
0 |
0 |
int new_map = bracket_map | ((n < 32)? (1 << n) : 1); |
|
8807
|
0 |
0 |
if (!is_startline(scode, new_map, cd, atomcount, inassert)) return FALSE; |
|
8812
|
0 |
3 |
else if (op == OP_ASSERT) |
|
8814
|
0 |
0 |
if (!is_startline(scode, bracket_map, cd, atomcount, TRUE)) return FALSE; |
|
8819
|
3 |
0 |
else if (op == OP_ONCE || op == OP_ONCE_NC) |
|
|
0 |
3 |
else if (op == OP_ONCE || op == OP_ONCE_NC) |
|
8821
|
0 |
0 |
if (!is_startline(scode, bracket_map, cd, atomcount + 1, inassert)) return FALSE; |
|
8830
|
3 |
0 |
else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR) |
|
|
3 |
0 |
else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR) |
|
|
0 |
3 |
else if (op == OP_TYPESTAR || op == OP_TYPEMINSTAR || op == OP_TYPEPOSSTAR) |
|
8832
|
0 |
0 |
if (scode[1] != OP_ANY || (bracket_map & cd->backref_map) != 0 || |
|
|
0 |
0 |
if (scode[1] != OP_ANY || (bracket_map & cd->backref_map) != 0 || |
|
|
0 |
0 |
if (scode[1] != OP_ANY || (bracket_map & cd->backref_map) != 0 || |
|
8833
|
0 |
0 |
atomcount > 0 || cd->had_pruneorskip || inassert) |
|
|
0 |
0 |
atomcount > 0 || cd->had_pruneorskip || inassert) |
|
8842
|
3 |
0 |
else if (op != OP_CIRC && op != OP_CIRCM) return FALSE; |
|
|
3 |
0 |
else if (op != OP_CIRC && op != OP_CIRCM) return FALSE; |
|
8848
|
0 |
0 |
while (*code == OP_ALT); /* Loop for each alternative */ |
|
8886
|
3 |
0 |
int xl = (*code == OP_CBRA || *code == OP_SCBRA || |
|
|
3 |
0 |
int xl = (*code == OP_CBRA || *code == OP_SCBRA || |
|
8887
|
3 |
0 |
*code == OP_CBRAPOS || *code == OP_SCBRAPOS)? IMM2_SIZE:0; |
|
|
0 |
3 |
*code == OP_CBRAPOS || *code == OP_SCBRAPOS)? IMM2_SIZE:0; |
|
8907
|
0 |
0 |
if (dflags < 0) |
|
8909
|
0 |
0 |
if (cflags < 0) { c = d; cflags = dflags; } else if (c != d || cflags != dflags) return 0; |
|
|
0 |
0 |
if (cflags < 0) { c = d; cflags = dflags; } else if (c != d || cflags != dflags) return 0; |
|
|
0 |
0 |
if (cflags < 0) { c = d; cflags = dflags; } else if (c != d || cflags != dflags) return 0; |
|
8920
|
0 |
0 |
if (!inassert) return 0; |
|
8921
|
0 |
0 |
if (cflags < 0) { c = scode[1]; cflags = 0; } |
|
8922
|
0 |
0 |
else if (c != scode[1]) return 0; |
|
8933
|
0 |
0 |
if (!inassert) return 0; |
|
8934
|
0 |
0 |
if (cflags < 0) { c = scode[1]; cflags = REQ_CASELESS; } |
|
8935
|
0 |
0 |
else if (c != scode[1]) return 0; |
|
8941
|
0 |
0 |
while (*code == OP_ALT); |
|
8973
|
0 |
0 |
for (i = 0; i < cd->names_found; i++) |
|
8976
|
0 |
0 |
if (crc == 0 && slot[IMM2_SIZE+length] != 0) |
|
|
0 |
0 |
if (crc == 0 && slot[IMM2_SIZE+length] != 0) |
|
8984
|
0 |
0 |
if (crc < 0) |
|
9104
|
0 |
31 |
if (errorptr == NULL) |
|
9106
|
0 |
0 |
if (errorcodeptr != NULL) *errorcodeptr = 99; |
|
9111
|
0 |
31 |
if (errorcodeptr != NULL) *errorcodeptr = ERR0; |
|
9115
|
0 |
31 |
if (erroroffset == NULL) |
|
9125
|
31 |
0 |
if (tables == NULL) tables = PRIV(default_tables); |
|
9133
|
0 |
31 |
if ((options & ~PUBLIC_COMPILE_OPTIONS) != 0) |
|
9141
|
0 |
31 |
if ((options & PCRE_NEVER_UTF) != 0) never_utf = TRUE; |
|
9148
|
0 |
31 |
while (ptr[skipatstart] == CHAR_LEFT_PARENTHESIS && |
|
|
0 |
0 |
while (ptr[skipatstart] == CHAR_LEFT_PARENTHESIS && |
|
9159
|
0 |
0 |
if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UTF8_RIGHTPAR, 5) == 0) |
|
9171
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UTF_RIGHTPAR, 4) == 0) |
|
9173
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_UCP_RIGHTPAR, 4) == 0) |
|
9175
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_NO_AUTO_POSSESS_RIGHTPAR, 16) == 0) |
|
9177
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_NO_START_OPT_RIGHTPAR, 13) == 0) |
|
9180
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_LIMIT_MATCH_EQ, 12) == 0) |
|
9184
|
0 |
0 |
while (isdigit(ptr[p])) |
|
9186
|
0 |
0 |
if (c > PCRE_UINT32_MAX / 10 - 1) break; /* Integer overflow */ |
|
9189
|
0 |
0 |
if (ptr[p++] != CHAR_RIGHT_PARENTHESIS) break; |
|
9190
|
0 |
0 |
if (c < limit_match) |
|
9199
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_LIMIT_RECURSION_EQ, 16) == 0) |
|
9203
|
0 |
0 |
while (isdigit(ptr[p])) |
|
9205
|
0 |
0 |
if (c > PCRE_UINT32_MAX / 10 - 1) break; /* Integer overflow check */ |
|
9208
|
0 |
0 |
if (ptr[p++] != CHAR_RIGHT_PARENTHESIS) break; |
|
9209
|
0 |
0 |
if (c < limit_recursion) |
|
9218
|
0 |
0 |
if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_CR_RIGHTPAR, 3) == 0) |
|
9220
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_LF_RIGHTPAR, 3) == 0) |
|
9222
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_CRLF_RIGHTPAR, 5) == 0) |
|
9224
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_ANY_RIGHTPAR, 4) == 0) |
|
9226
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_ANYCRLF_RIGHTPAR, 8) == 0) |
|
9229
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_BSR_ANYCRLF_RIGHTPAR, 12) == 0) |
|
9231
|
0 |
0 |
else if (STRNCMP_UC_C8(ptr+skipatstart+2, STRING_BSR_UNICODE_RIGHTPAR, 12) == 0) |
|
9234
|
0 |
0 |
if (newnl != 0) |
|
9236
|
0 |
0 |
else if (newbsr != 0) |
|
9243
|
0 |
31 |
if (utf && never_utf) |
|
|
0 |
0 |
if (utf && never_utf) |
|
9268
|
0 |
31 |
if (utf) |
|
9278
|
0 |
31 |
if ((options & PCRE_UCP) != 0) |
|
9287
|
0 |
31 |
if ((options & (PCRE_BSR_ANYCRLF|PCRE_BSR_UNICODE)) == |
|
9310
|
31 |
0 |
if (newline == -2) |
|
9314
|
0 |
0 |
else if (newline < 0) |
|
9321
|
0 |
0 |
if (newline > 255) |
|
9392
|
0 |
31 |
if (errorcode != 0) goto PCRE_EARLY_ERROR_RETURN; |
|
9397
|
0 |
31 |
if (length > MAX_PATTERN_SIZE) |
|
9413
|
0 |
31 |
if (re == NULL) |
|
9437
|
0 |
31 |
re->tables = (tables == PRIV(default_tables))? NULL : tables; |
|
9471
|
0 |
31 |
if (cd->names_found > 0) |
|
9476
|
0 |
0 |
for (; i > 0; i--, ng++) |
|
9478
|
0 |
0 |
if (cd->named_group_list_size > NAMED_GROUP_LIST_SIZE) |
|
9496
|
0 |
31 |
if (cd->had_accept) |
|
9504
|
31 |
0 |
if (errorcode == 0 && *ptr != CHAR_NULL) errorcode = ERR22; |
|
|
0 |
31 |
if (errorcode == 0 && *ptr != CHAR_NULL) errorcode = ERR22; |
|
9512
|
0 |
31 |
if (code - codestart > length) errorcode = ERR23; |
|
9525
|
0 |
31 |
if (cd->hwm > cd->start_workspace) |
|
9529
|
0 |
0 |
while (errorcode == 0 && cd->hwm > cd->start_workspace) |
|
|
0 |
0 |
while (errorcode == 0 && cd->hwm > cd->start_workspace) |
|
9538
|
0 |
0 |
if (offset == 0 || codestart[offset-1] != OP_RECURSE) |
|
|
0 |
0 |
if (offset == 0 || codestart[offset-1] != OP_RECURSE) |
|
9545
|
0 |
0 |
if (recno != prev_recno) |
|
9550
|
0 |
0 |
if (groupptr == NULL) errorcode = ERR53; |
|
9558
|
0 |
31 |
if (cd->workspace_size > COMPILE_WORK_SIZE) |
|
9565
|
31 |
0 |
if (errorcode == 0 && re->top_backref > re->top_bracket) errorcode = ERR15; |
|
|
0 |
31 |
if (errorcode == 0 && re->top_backref > re->top_bracket) errorcode = ERR15; |
|
9574
|
31 |
0 |
if (errorcode == 0 && (options & PCRE_NO_AUTO_POSSESS) == 0) |
|
|
31 |
0 |
if (errorcode == 0 && (options & PCRE_NO_AUTO_POSSESS) == 0) |
|
9588
|
31 |
0 |
if (errorcode == 0 && cd->check_lookbehind) |
|
|
0 |
31 |
if (errorcode == 0 && cd->check_lookbehind) |
|
9597
|
0 |
0 |
for (cc = (pcre_uchar *)PRIV(find_bracket)(codestart, utf, -1); |
|
9601
|
0 |
0 |
if (GET(cc, 1) == 0) |
|
9611
|
0 |
0 |
if (fixed_length < 0) |
|
9613
|
0 |
0 |
errorcode = (fixed_length == -2)? ERR36 : |
|
9614
|
0 |
0 |
(fixed_length == -4)? ERR70 : ERR25; |
|
9617
|
0 |
0 |
if (fixed_length > cd->max_lookbehind) cd->max_lookbehind = fixed_length; |
|
9626
|
0 |
31 |
if (errorcode != 0) |
|
9633
|
0 |
0 |
if (errorcodeptr != NULL) *errorcodeptr = errorcode; |
|
9648
|
31 |
0 |
if ((re->options & PCRE_ANCHORED) == 0) |
|
9650
|
5 |
26 |
if (is_anchored(codestart, 0, cd, 0)) re->options |= PCRE_ANCHORED; |
|
9653
|
3 |
23 |
if (firstcharflags < 0) |
|
9655
|
23 |
3 |
if (firstcharflags >= 0) /* Remove caseless flag for non-caseable chars */ |
|
9664
|
0 |
23 |
if ((firstcharflags & REQ_CASELESS) != 0) |
|
9680
|
0 |
0 |
if (MAX_255(re->first_char) |
|
9688
|
0 |
3 |
else if (is_startline(codestart, 0, cd, 0, FALSE)) re->flags |= PCRE_STARTLINE; |
|
9696
|
26 |
5 |
if (reqcharflags >= 0 && |
|
|
3 |
23 |
if (reqcharflags >= 0 && |
|
9697
|
3 |
0 |
((re->options & PCRE_ANCHORED) == 0 || (reqcharflags & REQ_VARY) != 0)) |
|
9706
|
0 |
26 |
if ((reqcharflags & REQ_CASELESS) != 0) |
|
9722
|
0 |
0 |
if (MAX_255(re->req_char) && cd->fcc[re->req_char] != re->req_char) |
|
9782
|
5 |
26 |
if (could_be_empty_branch(codestart, code, utf, cd, NULL)) |
|
9789
|
0 |
26 |
while (*codestart == OP_ALT); |