diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index bed2e48df..9cd4db639 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -372,7 +372,8 @@ bool luaFindFieldByName(const char * name, LuaField & field, unsigned int flags) for (int i = 0; i < MAX_TELEMETRY_SENSORS; i++) { if (isTelemetryFieldAvailable(i)) { const char* sensorName = g_model.telemetrySensors[i].label; - if ((len <= TELEM_LABEL_LEN) && !strncmp(sensorName, name, len)) { + int len = strnlen(sensorName, TELEM_LABEL_LEN); + if (!strncmp(sensorName, name, len)) { if (name[len] == '\0') { field.id = MIXSRC_FIRST_TELEM + 3 * i; field.desc[0] = '\0'; diff --git a/radio/src/strhelpers.cpp b/radio/src/strhelpers.cpp index 48bb7a8af..f5d1d5917 100644 --- a/radio/src/strhelpers.cpp +++ b/radio/src/strhelpers.cpp @@ -89,6 +89,16 @@ int zchar2str(char * dest, const char * src, int size) return size+1; } +int strnlen(const char *src, int max_size) +{ + for (int i=0; i 0) { diff --git a/radio/src/strhelpers.h b/radio/src/strhelpers.h index de39c8867..1b25ab682 100644 --- a/radio/src/strhelpers.h +++ b/radio/src/strhelpers.h @@ -30,6 +30,7 @@ char char2lower(char c); int8_t char2zchar(char c); void str2zchar(char *dest, const char *src, int size); int zchar2str(char *dest, const char *src, int size); +int strnlen(const char *src, int max_size); char * strAppend(char * dest, const char * source, int len = 0); char * strAppendUnsigned(char * dest, uint32_t value, uint8_t digits = 0, uint8_t radix = 10);