From c09f6ce853eee2cf9778a8c9ac0ee1100ca068d1 Mon Sep 17 00:00:00 2001 From: Marko Grujic Date: Fri, 18 Sep 2026 16:20:40 +0200 Subject: [PATCH 1/2] Fix crash in pg_identify_object() when an object's schema is missing Add a NULL-check so that quote_identifier doesn't try to deref a NULL pointer and segfault. Also fix strlist_to_textarray to correctly handle NULL items too. --- src/backend/catalog/objectaddress.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index d3eee732062..71efd3928e0 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -4379,15 +4379,17 @@ pg_identify_object(PG_FUNCTION_ARGS) objidentity = getObjectIdentity(&address, true); /* schema name */ + nulls[1] = true; if (OidIsValid(schema_oid) && objidentity) { - const char *schema = quote_identifier(get_namespace_name(schema_oid)); + char *nspname = get_namespace_name(schema_oid); - values[1] = CStringGetTextDatum(schema); - nulls[1] = false; + if (nspname != NULL) + { + values[1] = CStringGetTextDatum(quote_identifier(nspname)); + nulls[1] = false; + } } - else - nulls[1] = true; /* object name */ if (objname && objidentity) @@ -6248,11 +6250,15 @@ strlist_to_textarray(List *list) if (name) { + datums[j] = CStringGetTextDatum(name); nulls[j] = false; - datums[j++] = CStringGetTextDatum(name); } else + { + datums[j] = (Datum) 0; nulls[j] = true; + } + j++; } MemoryContextSwitchTo(oldcxt); base-commit: 311df1dc0392f06973cf98eac51d63cb007267ce -- 2.54.0 (Apple Git-157)