From: Michael Paquier Date: Mon, 14 Sep 2020 01:44:23 +0000 (+0900) Subject: Avoid useless allocations for information of dumpable objects in pg_dump/ X-Git-Tag: REL_14_BETA1~1661 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ac673a1aaff197f3e01f7bac69da0dd700854e13;p=thirdparty%2Fpostgresql.git Avoid useless allocations for information of dumpable objects in pg_dump/ If there are no objects of a certain type, there is no need to do an allocation for a set of DumpableObject items. The previous coding did an allocation of 1 byte instead as per the fallback of pg_malloc() in the event of an allocation size of zero. This assigns NULL instead for a set of dumpable objects. A similar rule already applied to findObjectByOid(), so this makes the code more defensive as we would just fail with a pointer dereference instead of attempting to use some incorrect data if a non-existing, positive, OID is given by a caller of this function. Author: Daniel Gustafsson Reviewed-by: Julien Rouhaud, Ranier Vilela Discussion: https://postgr.es/m/26C43E58-BDD0-4F1A-97CC-4A07B52E32C5@yesql.se --- diff --git a/src/bin/pg_dump/common.c b/src/bin/pg_dump/common.c index 08239dde4f9..634ca86cfb7 100644 --- a/src/bin/pg_dump/common.c +++ b/src/bin/pg_dump/common.c @@ -719,6 +719,9 @@ buildIndexArray(void *objArray, int numObjs, Size objSize) DumpableObject **ptrs; int i; + if (numObjs <= 0) + return NULL; + ptrs = (DumpableObject **) pg_malloc(numObjs * sizeof(DumpableObject *)); for (i = 0; i < numObjs; i++) ptrs[i] = (DumpableObject *) ((char *) objArray + i * objSize);