From 95c196dd33dc8e08ad97a2668e92feb899f49b95 Mon Sep 17 00:00:00 2001 From: Josh Kupershmidt Date: Sun, 11 Nov 2012 15:24:38 -0500 Subject: [PATCH] Have get_quoted_relname(), get_quoted_nspname(), and reorg_drop() sanity check arguments to prevent NULL pointer dereferencing and backend crash. Fix for Issue #20. --- lib/repack.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/repack.c b/lib/repack.c index 4451153..21aa538 100644 --- a/lib/repack.c +++ b/lib/repack.c @@ -797,6 +797,12 @@ repack_drop(PG_FUNCTION_ARGS) const char *relname = get_quoted_relname(oid); const char *nspname = get_quoted_nspname(oid); + if (!(relname && nspname)) + { + elog(ERROR, "table name not found for OID %u", oid); + PG_RETURN_VOID(); + } + /* authority check */ must_be_superuser("repack_drop"); @@ -895,13 +901,15 @@ repack_prepare(const char *src, int nargs, Oid *argtypes) static const char * get_quoted_relname(Oid oid) { - return quote_identifier(get_rel_name(oid)); + const char *relname = get_rel_name(oid); + return (relname ? quote_identifier(relname) : NULL); } static const char * get_quoted_nspname(Oid oid) { - return quote_identifier(get_namespace_name(get_rel_namespace(oid))); + const char *nspname = get_namespace_name(get_rel_namespace(oid)); + return (nspname ? quote_identifier(nspname) : NULL); } /*