summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2012-03-07 23:46:41 +0200
committerPeter Eisentraut <peter_e@gmx.net>2012-03-11 00:51:24 +0200
commit8136842f22c7026832b561481063f87f32a41b18 (patch)
tree7b90a41b9f57a34f149b7de0062213ea08f28d66 /src
parentd7a8e9a70ed3eaa854562dbfaf70fab78491c66c (diff)
psql: Fix invalid memory access
Due to an apparent thinko, when printing a table in expanded mode (\x), space would be allocated for 1 slot plus 1 byte per line, instead of 1 slot per line plus 1 slot for the NULL terminator. When the line count is small, reading or writing the terminator would therefore access memory beyond what was allocated.
Diffstat (limited to 'src')
-rw-r--r--src/bin/psql/print.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c
index 0f17fd78261..8c4ff0cdb05 100644
--- a/src/bin/psql/print.c
+++ b/src/bin/psql/print.c
@@ -994,8 +994,8 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout)
* We now have all the information we need to setup the formatting
* structures
*/
- dlineptr = pg_local_malloc((sizeof(*dlineptr) + 1) * dheight);
- hlineptr = pg_local_malloc((sizeof(*hlineptr) + 1) * hheight);
+ dlineptr = pg_local_malloc((sizeof(*dlineptr)) * (dheight + 1));
+ hlineptr = pg_local_malloc((sizeof(*hlineptr)) * (hheight + 1));
dlineptr->ptr = pg_local_malloc(dformatsize);
hlineptr->ptr = pg_local_malloc(hformatsize);