|
|
@@ -481,6 +481,11 @@ FuriString *get_json_value_furi(const char *key, const FuriString *json_data)
|
|
|
return NULL;
|
|
|
}
|
|
|
uint32_t max_tokens = json_token_count_furi(json_data);
|
|
|
+ if (!jsmn_memory_check(max_tokens))
|
|
|
+ {
|
|
|
+ FURI_LOG_E("JSMM.H", "Insufficient memory for JSON tokens.");
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
// Create a temporary FuriString from key
|
|
|
FuriString *key_str = furi_string_alloc();
|
|
|
furi_string_cat_str(key_str, key);
|
|
|
@@ -546,6 +551,12 @@ FuriString *get_json_array_value_furi(const char *key, uint32_t index, const Fur
|
|
|
return NULL;
|
|
|
}
|
|
|
uint32_t max_tokens = json_token_count_furi(array_str);
|
|
|
+ if (!jsmn_memory_check(max_tokens))
|
|
|
+ {
|
|
|
+ FURI_LOG_E("JSMM.H", "Insufficient memory for JSON tokens.");
|
|
|
+ furi_string_free(array_str);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
jsmn_parser parser;
|
|
|
jsmn_init_furi(&parser);
|
|
|
|
|
|
@@ -576,7 +587,7 @@ FuriString *get_json_array_value_furi(const char *key, uint32_t index, const Fur
|
|
|
|
|
|
if (index >= (uint32_t)tokens[0].size)
|
|
|
{
|
|
|
- FURI_LOG_E("JSMM.H", "Index %lu out of bounds for array with size %u.", index, tokens[0].size);
|
|
|
+ // FURI_LOG_E("JSMM.H", "Index %lu out of bounds for array with size %u.", index, tokens[0].size);
|
|
|
free(tokens);
|
|
|
furi_string_free(array_str);
|
|
|
return NULL;
|
|
|
@@ -622,6 +633,12 @@ FuriString **get_json_array_values_furi(const char *key, const FuriString *json_
|
|
|
}
|
|
|
|
|
|
uint32_t max_tokens = json_token_count_furi(array_str);
|
|
|
+ if (!jsmn_memory_check(max_tokens))
|
|
|
+ {
|
|
|
+ FURI_LOG_E("JSMM.H", "Insufficient memory for JSON tokens.");
|
|
|
+ furi_string_free(array_str);
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
jsmn_parser parser;
|
|
|
jsmn_init_furi(&parser);
|
|
|
|