aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/jsonfuncs.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2016-03-23 10:43:13 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2016-03-23 10:43:24 -0400
commit5f95521b3a4ede720d8927383d79b11e37b6bc80 (patch)
tree3a532ff5db6d84b7c2d866d5c3660f9e0050ba70 /src/backend/utils/adt/jsonfuncs.c
parent147112d0984331d92b8c2faad885788c7cfd9fd2 (diff)
downloadpostgresql-5f95521b3a4ede720d8927383d79b11e37b6bc80.tar.gz
postgresql-5f95521b3a4ede720d8927383d79b11e37b6bc80.zip
Fix unsafe use of strtol() on a non-null-terminated Text datum.
jsonb_set() could produce wrong answers or incorrect error reports, or in the worst case even crash, when trying to convert a path-array element into an integer for use as an array subscript. Per report from Vitaly Burovoy. Back-patch to 9.5 where the faulty code was introduced (in commit c6947010ceb42143). Michael Paquier
Diffstat (limited to 'src/backend/utils/adt/jsonfuncs.c')
-rw-r--r--src/backend/utils/adt/jsonfuncs.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/utils/adt/jsonfuncs.c b/src/backend/utils/adt/jsonfuncs.c
index a4842cbcd83..6cf2b783e6d 100644
--- a/src/backend/utils/adt/jsonfuncs.c
+++ b/src/backend/utils/adt/jsonfuncs.c
@@ -3873,7 +3873,7 @@ setPathArray(JsonbIterator **it, Datum *path_elems, bool *path_nulls,
/* pick correct index */
if (level < path_len && !path_nulls[level])
{
- char *c = VARDATA_ANY(path_elems[level]);
+ char *c = TextDatumGetCString(path_elems[level]);
long lindex;
errno = 0;