• Tom Lane's avatar
    Clean up code for widget_in() and widget_out(). · 1cb63c79
    Tom Lane authored
    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
    1cb63c79
regress.c 26.7 KB