fix: simple_json 解析末尾对象值时 y 未赋值 + 缺少 '}' 兜底
两处修复 (simple_parse_json & simple_json_getarray_item):
1. if(y==NULL) strstr(q,"}\n") → if(y==NULL) y = strstr(q,"}\n")
(缺失 y = 导致 strlen(NULL) 崩溃)
2. 新增 if(y==NULL) y = strchr(q, '}')
(JSON 末尾对象值 "data":{...}} 只有 }} 无 }, \r\n 时需兜底)
This commit is contained in:
@@ -99,7 +99,8 @@ void simple_parse_json(const char * data, char *key_str, char *value_str)
|
||||
if(y == NULL)
|
||||
{
|
||||
y = strstr(q, "}\r\n");
|
||||
if(y == NULL) strstr(q, "}\n");
|
||||
if(y == NULL) y = strstr(q, "}\n");
|
||||
if(y == NULL) y = strchr(q, '}');
|
||||
}
|
||||
len = strlen(q) - strlen(y);
|
||||
memcpy(value_str, q, len);
|
||||
@@ -200,7 +201,8 @@ void simple_json_getarray_item(const char * data, char *key_str, char *value_str
|
||||
if(y == NULL)
|
||||
{
|
||||
y = strstr(q, "}\r\n");
|
||||
if(y == NULL) strstr(q, "}\n");
|
||||
if(y == NULL) y = strstr(q, "}\n");
|
||||
if(y == NULL) y = strchr(q, '}');
|
||||
}
|
||||
len = strlen(q) - strlen(y);
|
||||
memcpy(value_str, q, len);
|
||||
|
||||
Reference in New Issue
Block a user