diff options
author | Emil Velikov <emil.l.velikov@gmail.com> | 2024-02-12 17:23:10 +0000 |
---|---|---|
committer | Lucas De Marchi <lucas.de.marchi@gmail.com> | 2024-04-30 12:33:52 -0500 |
commit | 737744301a992ed55801acb725995746bdad62a1 (patch) | |
tree | b51af9acd48621d59b7ab5cac2652e7c91a2e2e4 | |
parent | 0c127388070b8d696bb52c783985d4d10f74a5bc (diff) | |
download | kmod-737744301a992ed55801acb725995746bdad62a1.tar.gz |
libkmod: swap alloca usage for a few assert_cc
Since all the compression magic is always available now, we don't need
to loop at runtime nor use alloca - latter of which comes with a handful
of caveats.
Simply throw in a few assert_cc(), which will trigger at build-time.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Lucas De Marchi <lucas.de.marchi@gmail.com>
-rw-r--r-- | libkmod/libkmod-file.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/libkmod/libkmod-file.c b/libkmod/libkmod-file.c index b69f1ef..5b88d6c 100644 --- a/libkmod/libkmod-file.c +++ b/libkmod/libkmod-file.c @@ -410,7 +410,6 @@ struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx, { struct kmod_file *file = calloc(1, sizeof(struct kmod_file)); const struct comp_type *itr; - size_t magic_size_max = 0; int err = 0; if (file == NULL) @@ -422,22 +421,17 @@ struct kmod_file *kmod_file_open(const struct kmod_ctx *ctx, goto error; } - for (itr = comp_types; itr->load != NULL; itr++) { - if (magic_size_max < itr->magic_size) - magic_size_max = itr->magic_size; - } - - if (magic_size_max > 0) { - char *buf = alloca(magic_size_max + 1); + { + char buf[7]; ssize_t sz; - if (buf == NULL) { - err = -errno; - goto error; - } - sz = read_str_safe(file->fd, buf, magic_size_max + 1); + assert_cc(sizeof(magic_zstd) < sizeof(buf)); + assert_cc(sizeof(magic_xz) < sizeof(buf)); + assert_cc(sizeof(magic_zlib) < sizeof(buf)); + + sz = read_str_safe(file->fd, buf, sizeof(buf)); lseek(file->fd, 0, SEEK_SET); - if (sz != (ssize_t)magic_size_max) { + if (sz != (sizeof(buf) - 1)) { if (sz < 0) err = sz; else |