In this loop,

> +                     for (i = 0; i < desc->natts; i++)
> +                     {
> +                             char       *val;
> +                             int                     vallen;
> +

> +                             vallen = strlen(val);
> +                             if (vallen <= maxfieldlen)
> +                                     appendStringInfoString(&buf, val);
> +                             else
> +                             {
> +                                     vallen = pg_mbcliplen(val, vallen, 
> maxfieldlen);
> +                                     appendBinaryStringInfo(&buf, val, 
> vallen);
> +                                     appendStringInfoString(&buf, "...");
> +                             }
> +                     }

you're checking that each individual field doesn't go over maxfieldlen
chars (30), but if the fields are numerous, this could end up being very
long anyway.  I think you need to limit total length as well, and as
soon as buf.len exceeds some number of chars, exit the loop.

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to