• Tom Lane's avatar
    Fix PQsetvalue() to avoid possible crash when adding a new tuple. · a9f0dbc3
    Tom Lane authored
    PQsetvalue unnecessarily duplicated the logic in pqAddTuple, and didn't
    duplicate it exactly either --- pqAddTuple does not care what is in the
    tuple-pointer array positions beyond the last valid entry, whereas the
    code in PQsetvalue assumed such positions would contain NULL.  This led
    to possible crashes if PQsetvalue was applied to a PGresult that had
    previously been enlarged with pqAddTuple, for instance one built from a
    server query.  Fix by relying on pqAddTuple instead of duplicating logic,
    and not assuming anything about the contents of res->tuples[res->ntups].
    
    Back-patch to 8.4, where PQsetvalue was introduced.
    
    Andrew Chernow
    a9f0dbc3
fe-exec.c 82.9 KB