]> granicus.if.org Git - postgresql/commitdiff
psql: Fix invalid memory access
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 7 Mar 2012 21:46:41 +0000 (23:46 +0200)
committerPeter Eisentraut <peter_e@gmx.net>
Sat, 10 Mar 2012 22:51:00 +0000 (00:51 +0200)
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.

src/bin/psql/print.c

index 28afcdda743ec28ac5fc3a0c95d0dc60597c4324..08a853add943626523eaa68e4795a730663050f5 100644 (file)
@@ -1177,8 +1177,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);