diff --git a/components/nvs_flash/src/nvs_page.cpp b/components/nvs_flash/src/nvs_page.cpp index 918908dd6..cddb69393 100644 --- a/components/nvs_flash/src/nvs_page.cpp +++ b/components/nvs_flash/src/nvs_page.cpp @@ -18,7 +18,7 @@ #include "crc.h" #endif #include - +#include namespace nvs { @@ -156,8 +156,8 @@ esp_err_t Page::writeItem(uint8_t nsIndex, ItemType datatype, const char* key, c std::fill_n(reinterpret_cast(item.key), sizeof(item.key) / 4, 0xffffffff); std::fill_n(reinterpret_cast(item.data), sizeof(item.data) / 4, 0xffffffff); - strlcpy(item.key, key, Item::MAX_KEY_LENGTH + 1); - + strncpy(item.key, key, sizeof(item.key) - 1); + item.key[sizeof(item.key) - 1] = 0; if (datatype != ItemType::SZ && datatype != ItemType::BLOB) { memcpy(item.data, data, dataSize); diff --git a/components/nvs_flash/src/nvs_storage.cpp b/components/nvs_flash/src/nvs_storage.cpp index 5cbc52bee..9be6580a1 100644 --- a/components/nvs_flash/src/nvs_storage.cpp +++ b/components/nvs_flash/src/nvs_storage.cpp @@ -161,7 +161,8 @@ esp_err_t Storage::createOrOpenNamespace(const char* nsName, bool canCreate, uin NamespaceEntry* entry = new NamespaceEntry; entry->mIndex = ns; - strlcpy(entry->mName, nsName, sizeof(entry->mName)); + strncpy(entry->mName, nsName, sizeof(entry->mName) - 1); + entry->mName[sizeof(entry->mName) - 1] = 0; mNamespaces.push_back(entry); } else { @@ -250,4 +251,4 @@ void Storage::debugCheck() } #endif //ESP_PLATFORM -} \ No newline at end of file +} diff --git a/components/nvs_flash/test/Makefile b/components/nvs_flash/test/Makefile index 0b4de9c6b..d14dbaa3c 100644 --- a/components/nvs_flash/test/Makefile +++ b/components/nvs_flash/test/Makefile @@ -29,7 +29,7 @@ COVERAGE_FILES = $(OBJ_FILES:.o=.gc*) $(OBJ_FILES): %.o: %.cpp $(TEST_PROGRAM): $(OBJ_FILES) - gcc $(LDFLAGS) -o $(TEST_PROGRAM) $(OBJ_FILES) + g++ $(LDFLAGS) -o $(TEST_PROGRAM) $(OBJ_FILES) $(OUTPUT_DIR): mkdir -p $(OUTPUT_DIR) diff --git a/components/nvs_flash/test/test_intrusive_list.cpp b/components/nvs_flash/test/test_intrusive_list.cpp index 8fc7aa95d..979438a0b 100644 --- a/components/nvs_flash/test/test_intrusive_list.cpp +++ b/components/nvs_flash/test/test_intrusive_list.cpp @@ -19,7 +19,8 @@ struct TestNode : public intrusive_list_node { TestNode(const char* name_ = "", int num_ = 0) : num(num_) { - strlcpy(name, name_, sizeof(name)); + strncpy(name, name_, sizeof(name) - 1); + name[sizeof(name) - 1] = 0; } char name[32]; int num; diff --git a/components/nvs_flash/test/test_nvs.cpp b/components/nvs_flash/test/test_nvs.cpp index c137d9c6c..325cdcf45 100644 --- a/components/nvs_flash/test/test_nvs.cpp +++ b/components/nvs_flash/test/test_nvs.cpp @@ -62,7 +62,7 @@ TEST_CASE("crc32 behaves as expected", "[nvs]") CHECK(crc32_1 != item2.calculateCrc32()); item2 = item1; - strlcpy(item2.key, "foo", Item::MAX_KEY_LENGTH); + strncpy(item2.key, "foo", Item::MAX_KEY_LENGTH); CHECK(crc32_1 != item2.calculateCrc32()); } @@ -672,12 +672,12 @@ public: } if (err == ESP_ERR_NVS_REMOVE_FAILED) { written[index] = true; - strlcpy(reinterpret_cast(values[index]), buf, strBufLen); + strncpy(reinterpret_cast(values[index]), buf, strBufLen); return ESP_ERR_FLASH_OP_FAIL; } REQUIRE(err == ESP_OK); written[index] = true; - strlcpy(reinterpret_cast(values[index]), buf, strBufLen); + strncpy(reinterpret_cast(values[index]), buf, strBufLen); break; }