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
|
default 32
|
||||||
range 1 256
|
range 1 256
|
||||||
help
|
help
|
||||||
Object name maximum length. Note that this length
|
Object name maximum length. Note that this length include the
|
||||||
include the zero-termination character,
|
zero-termination character, meaning maximum string of characters
|
||||||
meaning maximum string of characters can at most be
|
can at most be SPIFFS_OBJ_NAME_LEN - 1.
|
||||||
SPIFFS_OBJ_NAME_LEN - 1.
|
|
||||||
|
SPIFFS_OBJ_NAME_LEN + SPIFFS_META_LENGTH should not exceed
|
||||||
|
SPIFFS_PAGE_SIZE - 64.
|
||||||
|
|
||||||
config SPIFFS_USE_MAGIC
|
config SPIFFS_USE_MAGIC
|
||||||
bool "Enable SPIFFS Filesystem 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
|
Set this to at least 4 bytes to enable support for saving file
|
||||||
modification time.
|
modification time.
|
||||||
|
|
||||||
|
SPIFFS_OBJ_NAME_LEN + SPIFFS_META_LENGTH should not exceed
|
||||||
|
SPIFFS_PAGE_SIZE - 64.
|
||||||
|
|
||||||
config SPIFFS_USE_MTIME
|
config SPIFFS_USE_MTIME
|
||||||
bool "Save file modification time"
|
bool "Save file modification time"
|
||||||
default "y"
|
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.
|
// changes the on-disk format, so the change is not backward-compatible.
|
||||||
//
|
//
|
||||||
// Do note: the meta length must never exceed
|
// 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:
|
// This is derived from following:
|
||||||
// logical_page_size - (SPIFFS_OBJ_NAME_LEN + sizeof(spiffs_page_header) +
|
// logical_page_size - (SPIFFS_OBJ_NAME_LEN + sizeof(spiffs_page_header) +
|
||||||
// spiffs_object_ix_header fields + at least some LUT entries)
|
// spiffs_object_ix_header fields + at least some LUT entries)
|
||||||
#define SPIFFS_OBJ_META_LEN (CONFIG_SPIFFS_META_LENGTH)
|
#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.
|
// Size of buffer allocated on stack used when copying data.
|
||||||
// Lower value generates more read/writes. No meaning having it bigger
|
// Lower value generates more read/writes. No meaning having it bigger
|
||||||
|
|
Loading…
Reference in a new issue