spiffs: check if OBJ_NAME_LEN + OBJ_META_LEN is within limits
The limit was mentioned in spiffs_config.h but was not checked. Fixes https://github.com/espressif/esp-idf/issues/1546
This commit is contained in:
parent
507a3a6391
commit
594d5c1436
2 changed files with 13 additions and 5 deletions
|
@ -76,10 +76,12 @@ config SPIFFS_OBJ_NAME_LEN
|
|||
default 32
|
||||
range 1 256
|
||||
help
|
||||
Object name maximum length. Note that this length
|
||||
include the zero-termination character,
|
||||
meaning maximum string of characters can at most be
|
||||
SPIFFS_OBJ_NAME_LEN - 1.
|
||||
Object name maximum length. Note that this length include the
|
||||
zero-termination character, meaning maximum string of characters
|
||||
can at most be SPIFFS_OBJ_NAME_LEN - 1.
|
||||
|
||||
SPIFFS_OBJ_NAME_LEN + SPIFFS_META_LENGTH should not exceed
|
||||
SPIFFS_PAGE_SIZE - 64.
|
||||
|
||||
config SPIFFS_USE_MAGIC
|
||||
bool "Enable SPIFFS Filesystem Magic"
|
||||
|
@ -109,6 +111,9 @@ config SPIFFS_META_LENGTH
|
|||
Set this to at least 4 bytes to enable support for saving file
|
||||
modification time.
|
||||
|
||||
SPIFFS_OBJ_NAME_LEN + SPIFFS_META_LENGTH should not exceed
|
||||
SPIFFS_PAGE_SIZE - 64.
|
||||
|
||||
config SPIFFS_USE_MTIME
|
||||
bool "Save file modification time"
|
||||
default "y"
|
||||
|
|
|
@ -153,12 +153,15 @@ extern void spiffs_api_unlock(struct spiffs_t *fs);
|
|||
// changes the on-disk format, so the change is not backward-compatible.
|
||||
//
|
||||
// Do note: the meta length must never exceed
|
||||
// logical_page_size - (SPIFFS_OBJ_NAME_LEN + 64)
|
||||
// logical_page_size - (SPIFFS_OBJ_NAME_LEN + SPIFFS_PAGE_EXTRA_SIZE)
|
||||
//
|
||||
// This is derived from following:
|
||||
// logical_page_size - (SPIFFS_OBJ_NAME_LEN + sizeof(spiffs_page_header) +
|
||||
// spiffs_object_ix_header fields + at least some LUT entries)
|
||||
#define SPIFFS_OBJ_META_LEN (CONFIG_SPIFFS_META_LENGTH)
|
||||
#define SPIFFS_PAGE_EXTRA_SIZE (64)
|
||||
_Static_assert(SPIFFS_OBJ_META_LEN + SPIFFS_OBJ_NAME_LEN + SPIFFS_PAGE_EXTRA_SIZE
|
||||
<= CONFIG_SPIFFS_PAGE_SIZE, "SPIFFS_OBJ_META_LEN or SPIFFS_OBJ_NAME_LEN too long");
|
||||
|
||||
// Size of buffer allocated on stack used when copying data.
|
||||
// Lower value generates more read/writes. No meaning having it bigger
|
||||
|
|
Loading…
Reference in a new issue