diff options
author | drh <> | 2023-10-11 17:21:16 +0000 |
---|---|---|
committer | drh <> | 2023-10-11 17:21:16 +0000 |
commit | 7d1c9da62dcde30f42f2a1d59aaf466207f922b7 (patch) | |
tree | 5ee20e8c58637d9a30e92602601712ac214ee42c /src | |
parent | 86db4555cab9e74f9c141a151af459c0e8069f54 (diff) | |
download | sqlite-7d1c9da62dcde30f42f2a1d59aaf466207f922b7.tar.gz sqlite-7d1c9da62dcde30f42f2a1d59aaf466207f922b7.zip |
Fix the use of an uninitialized value that occurs when doing a json_insert()
of a string value that contains embedded U+0000 characters.
FossilOrigin-Name: fc5ee9e51ad4556af526a6cefca5ae5a3b1b7affc4edf09832491d6b4f4ba366
Diffstat (limited to 'src')
-rw-r--r-- | src/json.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/json.c b/src/json.c index 3d0bba194..688ab32fe 100644 --- a/src/json.c +++ b/src/json.c @@ -4756,11 +4756,13 @@ static void jsonReplaceNode( break; } if( sqlite3_value_subtype(pValue)!=JSON_SUBTYPE ){ - char *zCopy = sqlite3DbStrDup(0, z); + char *zCopy = sqlite3_malloc64( n+1 ); int k; if( zCopy ){ + memcpy(zCopy, z, n); + zCopy[n] = 0; jsonParseAddCleanup(p, sqlite3_free, zCopy); - }else{ + }else{ p->oom = 1; sqlite3_result_error_nomem(pCtx); } |