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.
This commit is contained in:
parent
7b84eeb010
commit
95c196dd33
12
lib/repack.c
12
lib/repack.c
@ -797,6 +797,12 @@ repack_drop(PG_FUNCTION_ARGS)
|
|||||||
const char *relname = get_quoted_relname(oid);
|
const char *relname = get_quoted_relname(oid);
|
||||||
const char *nspname = get_quoted_nspname(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 */
|
/* authority check */
|
||||||
must_be_superuser("repack_drop");
|
must_be_superuser("repack_drop");
|
||||||
|
|
||||||
@ -895,13 +901,15 @@ repack_prepare(const char *src, int nargs, Oid *argtypes)
|
|||||||
static const char *
|
static const char *
|
||||||
get_quoted_relname(Oid oid)
|
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 *
|
static const char *
|
||||||
get_quoted_nspname(Oid oid)
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user