mirror of
https://github.com/postgres/postgres.git
synced 2025-05-08 07:21:33 +03:00
Avoid character classification in regex escape parsing.
For regex escape sequences, just test directly for the relevant ASCII characters rather than using locale-sensitive character classification. This fixes an assertion failure when a locale considers a non-ASCII character, such as "൧", to be a digit. Reported-by: Richard Guo Discussion: https://postgr.es/m/CAMbWs49Q6UoKGeT8pBkMtJGJd+16CBFZaaWUk9Du+2ERE5g_YA@mail.gmail.com Backpatch-through: 11
This commit is contained in:
parent
a14afd3bdc
commit
109363de0a
@ -613,7 +613,11 @@ lexescape(struct vars *v)
|
||||
|
||||
assert(!ATEOS());
|
||||
c = *v->now++;
|
||||
if (!iscalnum(c))
|
||||
|
||||
/* if it's not alphanumeric ASCII, treat it as a plain character */
|
||||
if (!('a' <= c && c <= 'z') &&
|
||||
!('A' <= c && c <= 'Z') &&
|
||||
!('0' <= c && c <= '9'))
|
||||
RETV(PLAIN, c);
|
||||
|
||||
NOTE(REG_UNONPOSIX);
|
||||
@ -755,8 +759,11 @@ lexescape(struct vars *v)
|
||||
RETV(PLAIN, c);
|
||||
break;
|
||||
default:
|
||||
assert(iscalpha(c));
|
||||
FAILW(REG_EESCAPE); /* unknown alphabetic escape */
|
||||
/*
|
||||
* Throw an error for unrecognized ASCII alpha escape sequences,
|
||||
* which reserves them for future use if needed.
|
||||
*/
|
||||
FAILW(REG_EESCAPE);
|
||||
break;
|
||||
}
|
||||
assert(NOTREACHED);
|
||||
|
Loading…
x
Reference in New Issue
Block a user