diff --git a/src/lib/controllib/block/Block.cpp b/src/lib/controllib/block/Block.cpp index 9e27b4321a..dad96c3096 100644 --- a/src/lib/controllib/block/Block.cpp +++ b/src/lib/controllib/block/Block.cpp @@ -66,16 +66,20 @@ void Block::getName(char *buf, size_t n) { if (getParent() == NULL) { strncpy(buf, _name, n); + // ensure string is terminated + buf[n - 1] = '\0'; } else { char parentName[blockNameLengthMax]; getParent()->getName(parentName, n); if (!strcmp(_name, "")) { - strncpy(buf, parentName, blockNameLengthMax); + strncpy(buf, parentName, n); + // ensure string is terminated + buf[n - 1] = '\0'; } else { - snprintf(buf, blockNameLengthMax, "%s_%s", parentName, _name); + snprintf(buf, n, "%s_%s", parentName, _name); } } } diff --git a/src/lib/controllib/block/BlockParam.cpp b/src/lib/controllib/block/BlockParam.cpp index 5b3ad134e6..d0c4e417d5 100644 --- a/src/lib/controllib/block/BlockParam.cpp +++ b/src/lib/controllib/block/BlockParam.cpp @@ -62,12 +62,16 @@ BlockParamBase::BlockParamBase(Block *parent, const char *name, bool parent_pref if (!strcmp(name, "")) { strncpy(fullname, parentName, blockNameLengthMax); + // ensure string is terminated + fullname[sizeof(fullname) - 1] = '\0'; } else if (parent_prefix) { snprintf(fullname, blockNameLengthMax, "%s_%s", parentName, name); } else { strncpy(fullname, name, blockNameLengthMax); + // ensure string is terminated + fullname[sizeof(fullname) - 1] = '\0'; } parent->getParams().add(this);