diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index dc40de2c02483f92b9c131636973b7eb077109dd..18b37537c0fefc309a0f61cc07a23db28279aea5 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -551,7 +551,7 @@ filter_event_trigger(const char **tag, EventTriggerCacheItem  *item)
 	}
 
 	/* Filter by tags, if any were specified. */
-	if (item->ntags != 0 && bsearch(&tag, item->tag,
+	if (item->ntags != 0 && bsearch(tag, item->tag,
 									item->ntags, sizeof(char *),
 									pg_qsort_strcmp) == NULL)
 		return false;
@@ -752,6 +752,9 @@ EventTriggerInvoke(List *fn_oid_list, EventTriggerData *trigdata)
 	ListCell	   *lc;
 	bool			first = true;
 
+	/* Guard against stack overflow due to recursive event trigger */
+	check_stack_depth();
+
 	/*
 	 * Let's evaluate event triggers in their own memory context, so
 	 * that any leaks get cleaned up promptly.