From: Tom Lane Date: Sat, 3 May 2003 22:19:18 +0000 (+0000) Subject: Fix erroneous space calculation leading to core dump in dumpProcLangs, X-Git-Tag: REL7_3_3~20 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fd9dd1b964e610107f847208d1e0232101c5e93f;p=postgresql 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. --- 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);