-
- Downloads
Make json{b}_populate_recordset() use the right tuple descriptor.
json{b}_populate_recordset() used the tuple descriptor created from the query-level AS clause without worrying about whether it matched the actual input record type. If it didn't, that would usually result in a crash, though disclosure of server memory contents seems possible as well, for a skilled attacker capable of issuing crafted SQL commands. Instead, use the query-supplied descriptor only when there is no input tuple to look at, and otherwise get a tuple descriptor based on the input tuple's own type marking. The core code will detect any type mismatch in the latter case. Michael Paquier and Tom Lane, per a report from David Rowley. Back-patch to 9.3 where this functionality was introduced. Security: CVE-2017-15098
Showing
- src/backend/utils/adt/jsonfuncs.c 28 additions, 11 deletionssrc/backend/utils/adt/jsonfuncs.c
- src/test/regress/expected/json.out 13 additions, 0 deletionssrc/test/regress/expected/json.out
- src/test/regress/expected/jsonb.out 13 additions, 0 deletionssrc/test/regress/expected/jsonb.out
- src/test/regress/sql/json.sql 6 additions, 0 deletionssrc/test/regress/sql/json.sql
- src/test/regress/sql/jsonb.sql 6 additions, 0 deletionssrc/test/regress/sql/jsonb.sql
Loading
Please register or sign in to comment