Main: resolve FIXME

This commit is contained in:
Alex Kotov 2022-05-24 18:09:02 +03:00
parent 0332f66928
commit 56ec03fb71
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
2 changed files with 32 additions and 3 deletions

View File

@ -279,9 +279,11 @@ bool KernAux_Multiboot2_ITag_ELFSymbols_is_valid(
) {
return (
tag->base.type == KERNAUX_MULTIBOOT2_ITAG_ELF_SYMBOLS &&
tag->base.size >= 16 // &&
// FIXME: division by zero in real-world data?
// (tag->base.size - 16) % tag->ent_size == 0
tag->base.size >= 16 &&
(
tag->ent_size == 0 ||
(tag->base.size - 16) % tag->ent_size == 0
)
);
}

View File

@ -522,6 +522,22 @@ tag_vbe_info_invalid_size = {
.vbe_mode_info = {0, 0, 0},
};
/******************
* Tag_ELFSymbols *
******************/
static const struct KernAux_Multiboot2_ITag_ELFSymbols
tag_elf_symbols_with_zero_ent_size_valid = {
.base = {
.type = KERNAUX_MULTIBOOT2_ITAG_ELF_SYMBOLS,
.size = 16,
},
.num = 0,
.ent_size = 0,
.shndx = 0,
.reserved1 = 0,
};
/**************
* Multiboot2 *
**************/
@ -933,6 +949,10 @@ int main()
&tag_vbe_info_invalid_size.base
));
assert(KernAux_Multiboot2_ITagBase_is_valid(
&tag_elf_symbols_with_zero_ent_size_valid.base
));
// Tag_None
assert(KernAux_Multiboot2_ITag_None_is_valid(&tag_none_valid));
@ -1095,5 +1115,12 @@ int main()
&tag_vbe_info_invalid_size
));
// Tag_ELFSymbols
assert(KernAux_Multiboot2_ITag_ELFSymbols_is_valid(
&tag_elf_symbols_with_zero_ent_size_valid
));
return 0;
}