Add recursion depth protection to LIKE matching.

Since MatchText() recurses, it could in principle be driven to stack
overflow, although quite a long pattern would be needed.
REL9_1_STABLE
Tom Lane 10 years ago
parent e7de1bc097
commit f80af01174
  1. 1
      src/backend/utils/adt/like.c
  2. 3
      src/backend/utils/adt/like_match.c

@ -21,6 +21,7 @@
#include "catalog/pg_collation.h"
#include "mb/pg_wchar.h"
#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/pg_locale.h"

@ -83,6 +83,9 @@ MatchText(char *t, int tlen, char *p, int plen,
if (plen == 1 && *p == '%')
return LIKE_TRUE;
/* Since this function recurses, it could be driven to stack overflow */
check_stack_depth();
/*
* In this loop, we advance by char when matching wildcards (and thus on
* recursive entry to this function we are properly char-synced). On other

Loading…
Cancel
Save