aboutsummaryrefslogtreecommitdiff
path: root/src/json.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/json.c')
-rw-r--r--src/json.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/json.c b/src/json.c
index 57309e367..738354f00 100644
--- a/src/json.c
+++ b/src/json.c
@@ -3720,6 +3720,7 @@ static u32 jsonLookupBlobStep(
x = pParse->aBlob[j] & 0x0f;
if( x<JSONB_TEXT || x>JSONB_TEXTRAW ) return JSON_BLOB_ERROR;
n = jsonbPayloadSize(pParse, j, &sz);
+ if( n==0 ) return JSON_BLOB_ERROR;
k = j+n;
if( k+sz>=iEnd ) return JSON_BLOB_ERROR;
if( sz==nKey && memcmp(&pParse->aBlob[k], zKey, nKey)==0 ){
@@ -3732,6 +3733,7 @@ static u32 jsonLookupBlobStep(
j = k+sz;
if( ((pParse->aBlob[j])&0x0f)>JSONB_OBJECT ) return JSON_BLOB_ERROR;
n = jsonbPayloadSize(pParse, j, &sz);
+ if( n==0 ) return JSON_BLOB_ERROR;
j += n+sz;
}
if( j>iEnd ) return JSON_BLOB_ERROR;
@@ -3776,6 +3778,7 @@ static u32 jsonLookupBlobStep(
}
k--;
n = jsonbPayloadSize(pParse, j, &sz);
+ if( n==0 ) return JSON_BLOB_ERROR;
j += n+sz;
}
if( j>iEnd ) return JSON_BLOB_ERROR;