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:
wangfq
2026-06-30 18:52:38 +08:00
parent ae02e58a36
commit 6389271bfc

View File

@@ -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);