diff options
-rw-r--r-- | include/sqfs/super.h | 5 | ||||
-rw-r--r-- | lib/sqfs/read_super.c | 5 | ||||
-rw-r--r-- | lib/sqfs/super.c | 5 |
3 files changed, 12 insertions, 3 deletions
diff --git a/include/sqfs/super.h b/include/sqfs/super.h index cdf8029..97ccef2 100644 --- a/include/sqfs/super.h +++ b/include/sqfs/super.h @@ -33,7 +33,10 @@ #define SQFS_VERSION_MAJOR 4 #define SQFS_VERSION_MINOR 0 #define SQFS_DEVBLK_SIZE 4096 -#define SQFS_DEFAULT_BLOCK_SIZE 131072 + +#define SQFS_MIN_BLOCK_SIZE (4 * 1024) +#define SQFS_MAX_BLOCK_SIZE (1024 * 1024) +#define SQFS_DEFAULT_BLOCK_SIZE (128 * 1024) /** * @struct sqfs_super_t diff --git a/lib/sqfs/read_super.c b/lib/sqfs/read_super.c index 8b3f019..919e720 100644 --- a/lib/sqfs/read_super.c +++ b/lib/sqfs/read_super.c @@ -54,7 +54,10 @@ int sqfs_super_read(sqfs_super_t *super, sqfs_file_t *file) if ((temp.block_size - 1) & temp.block_size) return SQFS_ERROR_SUPER_BLOCK_SIZE; - if (temp.block_size < 4096 || temp.block_size > (1 << 20)) + if (temp.block_size < SQFS_MIN_BLOCK_SIZE) + return SQFS_ERROR_SUPER_BLOCK_SIZE; + + if (temp.block_size > SQFS_MAX_BLOCK_SIZE) return SQFS_ERROR_SUPER_BLOCK_SIZE; if (temp.block_log < 12 || temp.block_log > 20) diff --git a/lib/sqfs/super.c b/lib/sqfs/super.c index 0257453..470c06a 100644 --- a/lib/sqfs/super.c +++ b/lib/sqfs/super.c @@ -20,7 +20,10 @@ int sqfs_super_init(sqfs_super_t *super, size_t block_size, sqfs_u32 mtime, if (block_size & (block_size - 1)) return SQFS_ERROR_SUPER_BLOCK_SIZE; - if (block_size < 4096 || block_size > (1 << 20)) + if (block_size < SQFS_MIN_BLOCK_SIZE) + return SQFS_ERROR_SUPER_BLOCK_SIZE; + + if (block_size > SQFS_MAX_BLOCK_SIZE) return SQFS_ERROR_SUPER_BLOCK_SIZE; memset(super, 0, sizeof(*super)); |