From 7395f41ccce067456b98515ec25f85e5e3702c38 Mon Sep 17 00:00:00 2001 From: rexy712 Date: Mon, 6 Apr 2020 06:43:46 -0700 Subject: [PATCH] Fix missing NULL check in rjp object key setting. Fix allowing empty key in object member addition --- src/rjp_object.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/rjp_object.c b/src/rjp_object.c index 464cbd5..c280883 100644 --- a/src/rjp_object.c +++ b/src/rjp_object.c @@ -51,7 +51,8 @@ RJP_value* rjp_new_member_steal_key(RJP_value* dest, char* key, RJP_index keylen if(!key) return NULL; if(!keylen) - keylen = strlen(key); + if(!(keylen = strlen(key))) + return NULL; switch(dest->type){ case rjp_json_object: return irjp_add_unordered_member(dest, key, keylen); @@ -65,7 +66,8 @@ RJP_value* rjp_new_member(RJP_value* dest, const char* key, RJP_index keylen){ if(!key) return NULL; if(!keylen) - keylen = rjp_escape_strlen(key); + if(!(keylen = rjp_escape_strlen(key))) + return NULL; char* newkey = rjp_alloc(keylen+1); rjp_escape_strcpy(newkey, key); newkey[keylen] = 0; @@ -123,7 +125,7 @@ void rjp_set_key(RJP_value* dest, const char* key, RJP_index keylen){ } char* newkey = rjp_alloc(keylen + 1); strncpy(newkey, key, keylen+1); - rjp_set_key(dest, newkey, keylen); + rjp_set_key_steal(dest, newkey, keylen); } void rjp_set_key_steal(RJP_value* dest, char* key, RJP_index keylen){ if(key){