mirror of
https://github.com/postgres/postgres.git
synced 2026-05-28 04:35:45 -04:00
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.
This commit is contained in:
parent
2df153b0f6
commit
fd9dd1b964
2 changed files with 7 additions and 4 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue