diff options
author | Teodor Sigaev <teodor@sigaev.ru> | 2009-03-10 17:33:53 +0000 |
---|---|---|
committer | Teodor Sigaev <teodor@sigaev.ru> | 2009-03-10 17:33:53 +0000 |
commit | 359771007e24804a9fd3912d8c8e023442ddde0d (patch) | |
tree | f723ee89b6e86645443c692db24fc99f5a2eef85 /src | |
parent | ce663593af8d88b832f8f01db90f5b379a62c97e (diff) | |
download | postgresql-359771007e24804a9fd3912d8c8e023442ddde0d.tar.gz postgresql-359771007e24804a9fd3912d8c8e023442ddde0d.zip |
Prevent recursion during parse of email-like string with multiple '@'.
Patch by Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/tsearch/wparser_def.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/tsearch/wparser_def.c b/src/backend/tsearch/wparser_def.c index 61e367b650c..dab9f27939a 100644 --- a/src/backend/tsearch/wparser_def.c +++ b/src/backend/tsearch/wparser_def.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tsearch/wparser_def.c,v 1.14.2.4 2009/03/02 15:11:25 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/tsearch/wparser_def.c,v 1.14.2.5 2009/03/10 17:33:53 teodor Exp $ * *------------------------------------------------------------------------- */ @@ -620,6 +620,8 @@ p_ishost(TParser *prs) TParser *tmpprs = TParserInit(prs->str + prs->state->posbyte, prs->lenstr - prs->state->posbyte); int res = 0; + tmpprs->wanthost = true; + if (TParserGet(tmpprs) && tmpprs->type == HOST) { prs->state->posbyte += tmpprs->lenbytetoken; @@ -1070,6 +1072,7 @@ static const TParserStateActionItem actionTPS_InHost[] = { }; static const TParserStateActionItem actionTPS_InEmail[] = { + {p_isstophost, 0, A_POP, TPS_Null, 0, NULL}, {p_ishost, 0, A_BINGO | A_CLRALL, TPS_Base, EMAIL, NULL}, {NULL, 0, A_POP, TPS_Null, 0, NULL} }; |