diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-02-21 12:39:28 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-02-21 12:39:28 +0100 |
commit | b63e39ade1e376ad8f433a0d751eddf4826a5230 (patch) | |
tree | cb24f5327860d5eaa8363690df159c98f71ac500 /lib/util/alloc.c | |
parent | 69c0f7749aad857f6f9f6628a7e8d1d3e0dcb541 (diff) |
Cleanup: move utilities back out of libsquashfs
This commit removes the allocation helpers and string table functions
out of libsquashfs back into a "libutil.a". The problem of libsquashfs
exporting stuff that it shouldn't is resolved by retaining the internal
attributes and directly adding the source to libsquashfs instead of
trying to somehow link against libutil.la.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'lib/util/alloc.c')
-rw-r--r-- | lib/util/alloc.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/util/alloc.c b/lib/util/alloc.c new file mode 100644 index 0000000..e8305d8 --- /dev/null +++ b/lib/util/alloc.c @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: LGPL-3.0-or-later */ +/* + * alloc.c + * + * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> + */ +#include "config.h" + +#include "util.h" + +#include <stdlib.h> +#include <errno.h> + +void *alloc_flex(size_t base_size, size_t item_size, size_t nmemb) +{ + size_t size; + + if (SZ_MUL_OV(nmemb, item_size, &size) || + SZ_ADD_OV(base_size, size, &size)) { + errno = EOVERFLOW; + return NULL; + } + + return calloc(1, size); +} + +void *alloc_array(size_t item_size, size_t nmemb) +{ + size_t size; + + if (SZ_MUL_OV(nmemb, item_size, &size)) { + errno = EOVERFLOW; + return NULL; + } + + return calloc(1, size); +} |