From fd9dd1b964e610107f847208d1e0232101c5e93f Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 3 May 2003 22:19:18 +0000 Subject: [PATCH] Fix erroneous space calculation leading to core dump in dumpProcLangs, per report from Olivier Prenant. Also fix off-by-one space calculation in ReadToc; this woould not have hurt us until we had more than 100 dependencies for a single object, but wrong is wrong. --- src/bin/pg_dump/pg_backup_archiver.c | 7 +++++-- src/bin/pg_dump/pg_dump.c | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 3a045e830b..9154ba22cd 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.62.2.3 2003/03/09 19:38:59 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.62.2.4 2003/05/03 22:19:18 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1915,7 +1915,7 @@ ReadToc(ArchiveHandle *AH) depIdx = 0; do { - if (depIdx > depSize) + if (depIdx >= depSize) { depSize *= 2; deps = realloc(deps, sizeof(char *) * depSize); @@ -1931,7 +1931,10 @@ ReadToc(ArchiveHandle *AH) if (depIdx > 1) /* We have a non-null entry */ te->depOid = realloc(deps, sizeof(char *) * depIdx); /* trim it */ else + { + free(deps); te->depOid = NULL; /* no deps */ + } } else te->depOid = NULL; diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 4b77c01651..183d8e6ff3 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -22,7 +22,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.305.2.4 2003/04/25 22:14:33 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.305.2.5 2003/05/03 22:19:18 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -3489,7 +3489,7 @@ dumpProcLangs(Archive *fout, FuncInfo finfo[], int numFuncs) resetPQExpBuffer(delqry); /* Make a dependency to ensure function is dumped first */ - deps = malloc(sizeof(char *) * (2 + (strcmp(lanvalidator, "0") != 0) ? 1 : 0)); + deps = malloc(sizeof(char *) * 10); depIdx = 0; (*deps)[depIdx++] = strdup(lanplcallfoid); -- 2.50.0