diff --git a/src/spiffs_hydrogen.c b/src/spiffs_hydrogen.c index 5e299b1..4f3eae6 100644 --- a/src/spiffs_hydrogen.c +++ b/src/spiffs_hydrogen.c @@ -975,6 +975,9 @@ s32_t SPIFFS_update_meta(spiffs *fs, const char *name, const void *meta) { #else SPIFFS_API_CHECK_CFG(fs); SPIFFS_API_CHECK_MOUNT(fs); + if (strlen(name) > SPIFFS_OBJ_NAME_LEN - 1) { + SPIFFS_API_CHECK_RES(fs, SPIFFS_ERR_NAME_TOO_LONG); + } SPIFFS_LOCK(fs); spiffs_page_ix pix, pix_dummy; diff --git a/src/test/test_hydrogen.c b/src/test/test_hydrogen.c index 7a3b405..3bcd161 100644 --- a/src/test/test_hydrogen.c +++ b/src/test/test_hydrogen.c @@ -720,6 +720,12 @@ TEST(name_too_long) { TEST_CHECK_LT(SPIFFS_rename(FS, "a", name), SPIFFS_OK); TEST_CHECK_EQ(SPIFFS_errno(FS), SPIFFS_ERR_NAME_TOO_LONG); +#if SPIFFS_OBJ_META_LEN + u8_t meta[SPIFFS_OBJ_META_LEN] = {0}; + TEST_CHECK_LT(SPIFFS_update_meta(FS, name, meta), SPIFFS_OK); + TEST_CHECK_EQ(SPIFFS_errno(FS), SPIFFS_ERR_NAME_TOO_LONG); +#endif + return TEST_RES_OK; } TEST_END