aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2009-03-10 17:32:14 +0000
committerTeodor Sigaev <teodor@sigaev.ru>2009-03-10 17:32:14 +0000
commit42831729f7c9a77a2b4b57b1adbe9432f7c7f384 (patch)
treeba1b0a47b649fad5486e3982012d7a2acd9785de /src
parentb0c68c242c673b010b412a289181d408b68b095f (diff)
downloadpostgresql-42831729f7c9a77a2b4b57b1adbe9432f7c7f384.tar.gz
postgresql-42831729f7c9a77a2b4b57b1adbe9432f7c7f384.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.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/tsearch/wparser_def.c b/src/backend/tsearch/wparser_def.c
index 8d7cc1b8d50..1174b3fb774 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.21 2009/03/02 15:10:09 teodor Exp $
+ * $PostgreSQL: pgsql/src/backend/tsearch/wparser_def.c,v 1.22 2009/03/10 17:32:14 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}
};