pgsql: Clean up code for widget_in() and widget_out(). - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Clean up code for widget_in() and widget_out().
Date
Msg-id E1aHyVd-0004FM-7z@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Clean up code for widget_in() and widget_out().

Given syntactically wrong input, widget_in() could call atof() with an
indeterminate pointer argument, typically leading to a crash; or if it
didn't do that, it might return a NULL pointer, which again would lead
to a crash since old-style C functions aren't supposed to do things
that way.  Fix that by correcting the off-by-one syntax test and
throwing a proper error rather than just returning NULL.

Also, since widget_in and widget_out have been marked STRICT for a
long time, their tests for null inputs are just dead code; remove 'em.
In the oldest branches, also improve widget_out to use snprintf not
sprintf, just to be sure.

In passing, get rid of a long-since-useless sprintf into a local buffer
that nothing further is done with, and make some other minor coding
style cleanups.

In the intended regression-testing usage of these functions, none of
this is very significant; but if the regression test database were
left around in a production installation, these bugs could amount
to a minor security hazard.

Piotr Stefaniak, Michael Paquier, and Tom Lane

Branch
------
REL9_5_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/605afeca346e10aade853254d22ab89aa44ef467

Modified Files
--------------
src/test/regress/regress.c |   23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Clean up code for widget_in() and widget_out().
Next
From: Tom Lane
Date:
Subject: pgsql: Clean up code for widget_in() and widget_out().