make_ext4fs crashes if size is less than block size or less than
header size (super block + descriptors + bitmaps). Check the size
and return errors.
Test: run make_ext4fs with small sizes
Bug:
36576677
Change-Id: I61d92e280cdf290054fadda5a045fc839c6fd8fe
if (ext4_bg_has_super_block(aux_info.groups - 1))
last_header_size += 1 + aux_info.bg_desc_blocks +
info.bg_desc_reserve_blocks;
+ if (aux_info.groups <= 1 && last_group_size < last_header_size) {
+ critical_error("filesystem size too small");
+ }
if (last_group_size > 0 && last_group_size < last_header_size) {
aux_info.groups--;
aux_info.len_blocks -= last_group_size;
if (info.len <= 0)
info.len = get_file_size(fd);
- if (info.len <= 0) {
- fprintf(stderr, "Need size of filesystem\n");
- return EXIT_FAILURE;
- }
-
if (info.block_size <= 0)
info.block_size = compute_block_size();
/* Round down the filesystem length to be a multiple of the block size */
info.len &= ~((u64)info.block_size - 1);
+ if (info.len <= 0) {
+ fprintf(stderr, "filesystem size too small\n");
+ return EXIT_FAILURE;
+ }
+
if (info.journal_blocks == 0)
info.journal_blocks = compute_journal_blocks();