From 03e0062c55d10ce0ce2ca770d68b8f54a3550994 Mon Sep 17 00:00:00 2001 From: Daniel Gustafsson Date: Mon, 26 Jun 2017 14:39:18 +0200 Subject: [PATCH 5/6] Use PQExpBuffer for all table titles Rather than snprintf()'ing into a fixed buffer for meta command table titles in some cases, always use a PQExpBuffer as was done for most other. --- src/bin/psql/describe.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 24d77f84f2..f72670eb23 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -4126,7 +4126,7 @@ describeOneTSParser(const char *oid, const char *nspname, const char *prsname) { PQExpBufferData buf; PGresult *res; - char title[1024]; + PQExpBufferData title; printQueryOpt myopt = pset.popt; static const bool translate_columns[] = {true, false, false}; @@ -4182,11 +4182,13 @@ describeOneTSParser(const char *oid, const char *nspname, const char *prsname) return false; myopt.nullPrint = NULL; + initPQExpBuffer(&title); if (nspname) - sprintf(title, _("Text search parser \"%s.%s\""), nspname, prsname); + printfPQExpBuffer(&title, _("Text search parser \"%s.%s\""), + nspname, prsname); else - sprintf(title, _("Text search parser \"%s\""), prsname); - myopt.title = title; + printfPQExpBuffer(&title, _("Text search parser \"%s\""), prsname); + myopt.title = title.data; myopt.footers = NULL; myopt.topt.default_footer = false; myopt.translate_header = true; @@ -4214,11 +4216,13 @@ describeOneTSParser(const char *oid, const char *nspname, const char *prsname) return false; myopt.nullPrint = NULL; + resetPQExpBuffer(&title); if (nspname) - sprintf(title, _("Token types for parser \"%s.%s\""), nspname, prsname); + printfPQExpBuffer(&title, _("Token types for parser \"%s.%s\""), + nspname, prsname); else - sprintf(title, _("Token types for parser \"%s\""), prsname); - myopt.title = title; + printfPQExpBuffer(&title, _("Token types for parser \"%s\""), prsname); + myopt.title = title.data; myopt.footers = NULL; myopt.topt.default_footer = true; myopt.translate_header = true; @@ -4227,6 +4231,7 @@ describeOneTSParser(const char *oid, const char *nspname, const char *prsname) printQuery(res, &myopt, pset.queryFout, false, pset.logfile); + termPQExpBuffer(&title); PQclear(res); return true; } @@ -5017,7 +5022,7 @@ listOneExtensionContents(const char *extname, const char *oid) { PQExpBufferData buf; PGresult *res; - char title[1024]; + PQExpBufferData title; printQueryOpt myopt = pset.popt; initPQExpBuffer(&buf); @@ -5035,12 +5040,14 @@ listOneExtensionContents(const char *extname, const char *oid) return false; myopt.nullPrint = NULL; - snprintf(title, sizeof(title), _("Objects in extension \"%s\""), extname); - myopt.title = title; + initPQExpBuffer(&title); + printfPQExpBuffer(&title, _("Objects in extension \"%s\""), extname); + myopt.title = title.data; myopt.translate_header = true; printQuery(res, &myopt, pset.queryFout, false, pset.logfile); + termPQExpBuffer(&title); PQclear(res); return true; } -- 2.13.0.rc0.45.ge2cb6ab.dirty