diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 445064b0c40eac0aa4ae9625b51a69a7035a7bc9..681c88cc4e7ed652db20ffa9dddd4e0643186197 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2003, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.86 2004/05/07 00:24:58 tgl Exp $ + * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.87 2004/05/23 22:20:10 neilc Exp $ */ #include "postgres_fe.h" #include "common.h" @@ -802,7 +802,8 @@ PrintQueryResults(PGresult *results) char buf[10]; success = true; - sprintf(buf, "%u", (unsigned int) PQoidValue(results)); + snprintf(buf, sizeof(buf), + "%u", (unsigned int) PQoidValue(results)); if (!QUIET()) { if (pset.popt.topt.format == PRINT_HTML) diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c index 229b4e0024eef2e63f3308c1564671e504dd019e..72d6a6e288b6245744685cb44daf7b120c15063b 100644 --- a/src/bin/psql/print.c +++ b/src/bin/psql/print.c @@ -3,7 +3,7 @@ * * Copyright (c) 2000-2003, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.47 2004/05/18 20:18:58 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.48 2004/05/23 22:20:10 neilc Exp $ */ #include "postgres_fe.h" #include "common.h" @@ -1133,15 +1133,14 @@ void printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout) { int nfields; + int ncells; const char **headers; const char **cells; char **footers; char *align; int i; - /* extract headers */ - nfields = PQnfields(result); headers = calloc(nfields + 1, sizeof(*headers)); @@ -1155,15 +1154,15 @@ printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout) headers[i] = mbvalidate(PQfname(result, i), opt->topt.encoding); /* set cells */ - - cells = calloc(nfields * PQntuples(result) + 1, sizeof(*cells)); + ncells = PQntuples(result) * nfields; + cells = calloc(ncells + 1, sizeof(*cells)); if (!cells) { perror("calloc"); exit(EXIT_FAILURE); } - for (i = 0; i < nfields * PQntuples(result); i++) + for (i = 0; i < ncells; i++) { if (PQgetisnull(result, i / nfields, i % nfields)) cells[i] = opt->nullPrint ? opt->nullPrint : ""; @@ -1185,6 +1184,11 @@ printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout) } footers[0] = malloc(100); + if (!footers[0]) + { + perror("malloc"); + exit(EXIT_FAILURE); + } if (PQntuples(result) == 1) snprintf(footers[0], 100, gettext("(1 row)")); else @@ -1194,7 +1198,6 @@ printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout) footers = NULL; /* set alignment */ - align = calloc(nfields + 1, sizeof(*align)); if (!align) { @@ -1221,13 +1224,12 @@ printQuery(const PGresult *result, const printQueryOpt *opt, FILE *fout) } /* call table printer */ - printTable(opt->title, headers, cells, - footers ? (const char *const *) footers : (const char *const *) (opt->footers), + (const char *const *) footers, align, &opt->topt, fout); - free((void *) headers); - free((void *) cells); + free(headers); + free(cells); if (footers) { free(footers[0]);