From a36aa223ec447276bf7050ab9ec6d974cafdf6c4 Mon Sep 17 00:00:00 2001 From: Noah Misch Date: Thu, 22 Aug 2024 00:07:04 -0700 Subject: [PATCH] Fix attach of a previously-detached injection point. It's normal for the name in a free slot to match the new name. The max_inuse mechanism kept simple cases from reaching the problem. The problem could appear when index 0 was the previously-detached entry and index 1 is in use. Back-patch to v17, where this code first appeared. --- src/backend/utils/misc/injection_point.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/backend/utils/misc/injection_point.c b/src/backend/utils/misc/injection_point.c index 80bc32b0e08..7c1a7cf889d 100644 --- a/src/backend/utils/misc/injection_point.c +++ b/src/backend/utils/misc/injection_point.c @@ -315,8 +315,7 @@ InjectionPointAttach(const char *name, if (free_idx == -1) free_idx = idx; } - - if (strcmp(entry->name, name) == 0) + else if (strcmp(entry->name, name) == 0) elog(ERROR, "injection point \"%s\" already defined", name); } if (free_idx == -1) -- 2.39.5