mirror of
https://github.com/opnsense/src.git
synced 2026-04-28 17:49:22 -04:00
regcomp: use unsigned char when testing for escapes
- cast GETNEXT to unsigned where it is being promoted to int to prevent sign-extension (really it would have been better for PEEK*() and GETNEXT() to return unsigned char; this would have removed a ton of (uch) casts, but it is too intrusive for now). - fix an isalpha that should have been iswalpha PR: 264275, 274032 Reviewed by: kevans, eugen (previous version) Obtained from: NetBSD (cherry picked from commit 3fb80f1476c7776f04ba7ef6d08397cef6abcfb0)
This commit is contained in:
parent
803f088147
commit
56b09feb23
1 changed files with 4 additions and 4 deletions
|
|
@ -828,10 +828,10 @@ p_simp_re(struct parse *p, struct branchc *bc)
|
|||
handled = false;
|
||||
|
||||
assert(MORE()); /* caller should have ensured this */
|
||||
c = GETNEXT();
|
||||
c = (uch)GETNEXT();
|
||||
if (c == '\\') {
|
||||
(void)REQUIRE(MORE(), REG_EESCAPE);
|
||||
cc = GETNEXT();
|
||||
cc = (uch)GETNEXT();
|
||||
c = BACKSL | cc;
|
||||
#ifdef LIBREGEX
|
||||
if (p->gnuext) {
|
||||
|
|
@ -992,7 +992,7 @@ p_count(struct parse *p)
|
|||
int ndigits = 0;
|
||||
|
||||
while (MORE() && isdigit((uch)PEEK()) && count <= DUPMAX) {
|
||||
count = count*10 + (GETNEXT() - '0');
|
||||
count = count*10 + ((uch)GETNEXT() - '0');
|
||||
ndigits++;
|
||||
}
|
||||
|
||||
|
|
@ -1302,7 +1302,7 @@ may_escape(struct parse *p, const wint_t ch)
|
|||
|
||||
if ((p->pflags & PFLAG_LEGACY_ESC) != 0)
|
||||
return (true);
|
||||
if (isalpha(ch) || ch == '\'' || ch == '`')
|
||||
if (iswalpha(ch) || ch == '\'' || ch == '`')
|
||||
return (false);
|
||||
return (true);
|
||||
#ifdef NOTYET
|
||||
|
|
|
|||
Loading…
Reference in a new issue