mirror of
https://github.com/postgres/postgres.git
synced 2025-06-02 00:01:40 -04:00
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
This commit is contained in:
parent
8320c625d9
commit
384dfbde19
@ -3873,7 +3873,7 @@ setPathArray(JsonbIterator **it, Datum *path_elems, bool *path_nulls,
|
|||||||
/* pick correct index */
|
/* pick correct index */
|
||||||
if (level < path_len && !path_nulls[level])
|
if (level < path_len && !path_nulls[level])
|
||||||
{
|
{
|
||||||
char *c = VARDATA_ANY(path_elems[level]);
|
char *c = TextDatumGetCString(path_elems[level]);
|
||||||
long lindex;
|
long lindex;
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user