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:
@@ -98,8 +98,9 @@ void simple_parse_json(const char * data, char *key_str, char *value_str)
|
|||||||
y = strstr(q, "},");
|
y = strstr(q, "},");
|
||||||
if(y == NULL)
|
if(y == NULL)
|
||||||
{
|
{
|
||||||
y = strstr(q, "}\r\n");
|
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);
|
len = strlen(q) - strlen(y);
|
||||||
memcpy(value_str, q, len);
|
memcpy(value_str, q, len);
|
||||||
@@ -199,8 +200,9 @@ void simple_json_getarray_item(const char * data, char *key_str, char *value_str
|
|||||||
y = strstr(q, "},");
|
y = strstr(q, "},");
|
||||||
if(y == NULL)
|
if(y == NULL)
|
||||||
{
|
{
|
||||||
y = strstr(q, "}\r\n");
|
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);
|
len = strlen(q) - strlen(y);
|
||||||
memcpy(value_str, q, len);
|
memcpy(value_str, q, len);
|
||||||
|
|||||||
Reference in New Issue
Block a user