From 8e69976dbb9dba519e7c4e43004dcc087948c520 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Fri, 31 Dec 2021 18:41:40 +0100 Subject: [PATCH] Skip calibration data for invalid analogs --- radio/src/storage/yaml/yaml_datastructs_funcs.cpp | 5 +++++ radio/src/storage/yaml/yaml_tree_walker.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index 567745ec7..26adf40bf 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -463,6 +463,11 @@ static uint32_t r_calib(void* user, const char* val, uint8_t val_len) uint32_t sw = yaml_parse_enum(enum_MixSources, val, val_len); if (sw >= MIXSRC_Rud) return sw - MIXSRC_Rud; + // detect invalid values + if (val_len == 0 || (val[0] < '0') || (val[0] > '9')) { + return -1; + } + return (uint32_t)yaml_str2int(val, val_len); } diff --git a/radio/src/storage/yaml/yaml_tree_walker.cpp b/radio/src/storage/yaml/yaml_tree_walker.cpp index b2e900327..7f2c806da 100644 --- a/radio/src/storage/yaml/yaml_tree_walker.cpp +++ b/radio/src/storage/yaml/yaml_tree_walker.cpp @@ -301,7 +301,7 @@ bool YamlTreeWalker::toParent() bool YamlTreeWalker::toChild() { const struct YamlNode* attr = getAttr(); - if (!attr + if (!attr || isIdxInvalid() || (attr->type != YDT_ARRAY && attr->type != YDT_UNION && !isArrayElmt())) {