Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite757080

Browse files
committed
Make pg_regexec() robust against out-of-range search_start.
If search_start is greater than the length of the string, we should justreturn REG_NOMATCH immediately. (Note that the equality case should*not* be rejected, since the pattern might be able to match zerocharacters.) This guards various internal assumptions that the min of arange of string positions is not more than the max. Violation of thoseassumptions could allow an attempt to fetch string[search_start-1],possibly causing a crash.Jaime Casanova pointed out that this situation is reachable with thenew regexp_xxx functions that accept a user-specified start position.I don't believe it's reachable via any in-core call site in v14 andbelow. However, extensions could possibly call pg_regexec with anout-of-range search_start, so let's back-patch the fix anyway.Discussion:https://postgr.es/m/20210911180357.GA6870@ahch-to
1 parentc1b7a6c commite757080

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

‎src/backend/regex/regexec.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ pg_regexec(regex_t *re,
200200
returnREG_INVARG;
201201
if (re->re_csize!=sizeof(chr))
202202
returnREG_MIXED;
203+
if (search_start>len)
204+
returnREG_NOMATCH;
203205

204206
/* Initialize locale-dependent support */
205207
pg_set_regex_collation(re->re_collation);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp