diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2016-01-09 13:44:27 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2016-01-09 13:44:27 -0500 |
commit | 605afeca346e10aade853254d22ab89aa44ef467 (patch) | |
tree | 90d9e3bfdf815e46c425b318598382a28b0dc4c5 /src/backend/replication/logical/logicalfuncs.c | |
parent | 4e1ccc7e449aed32e63e53bc36e023f9259f2e09 (diff) | |
download | postgresql-605afeca346e10aade853254d22ab89aa44ef467.tar.gz postgresql-605afeca346e10aade853254d22ab89aa44ef467.zip |
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
Diffstat (limited to 'src/backend/replication/logical/logicalfuncs.c')
0 files changed, 0 insertions, 0 deletions