From: Alberto Leiva Popper Date: Fri, 23 Jun 2023 22:49:24 +0000 (-0600) Subject: Wrap alloc functions, to remove boilerplate X-Git-Tag: 1.6.0~80^2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea52d8f9f822ba73d2fa7e0208cd962fd7e2771c;p=thirdparty%2FFORT-validator.git Wrap alloc functions, to remove boilerplate --- diff --git a/src/Makefile.am b/src/Makefile.am index ad6c8f78..98d5f3d1 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -7,6 +7,7 @@ bin_PROGRAMS = fort fort_SOURCES = main.c fort_SOURCES += algorithm.h algorithm.c +fort_SOURCES += alloc.h alloc.c fort_SOURCES += certificate_refs.h certificate_refs.c fort_SOURCES += cert_stack.h cert_stack.c fort_SOURCES += common.c common.h diff --git a/src/alloc.c b/src/alloc.c new file mode 100644 index 00000000..fab25372 --- /dev/null +++ b/src/alloc.c @@ -0,0 +1,76 @@ +#include "alloc.h" + +#include +#include "log.h" + +void * +pmalloc(size_t size) +{ + void *result; + + result = malloc(size); + if (result == NULL) + enomem_panic(); + + return result; +} + +void * +pzalloc(size_t size) +{ + void *result; + + result = pmalloc(size); + memset(result, 0, size); + + return result; +} + +void * +pcalloc(size_t nmemb, size_t size) +{ + void *result; + + result = calloc(nmemb, size); + if (result == NULL) + enomem_panic(); + + return result; +} + +void * +prealloc(void *ptr, size_t size) +{ + void *result; + + result = realloc(ptr, size); + if (result == NULL) + enomem_panic(); + + return result; +} + +void * +pmclone(void const *src, size_t size) +{ + void *result; + + result = pmalloc(size); + if (result == NULL) + enomem_panic(); + memcpy(result, src, size); + + return result; +} + +char * +pstrdup(const char *s) +{ + char *result; + + result = strdup(s); + if (result == NULL) + enomem_panic(); + + return result; +} diff --git a/src/alloc.h b/src/alloc.h new file mode 100644 index 00000000..c53ab304 --- /dev/null +++ b/src/alloc.h @@ -0,0 +1,20 @@ +#ifndef SRC_ALLOC_H_ +#define SRC_ALLOC_H_ + +#include + +/* malloc(), but panic on allocation failure. */ +void *pmalloc(size_t size); +/* malloc(), but panic on allocation failure, zeroize memory on success. */ +void *pzalloc(size_t size); +/* calloc(), but panic on allocation failure. */ +void *pcalloc(size_t nmemb, size_t size); +/* realloc(), but panic on allocation failure. */ +void *prealloc(void *ptr, size_t size); +/* Clone @src on the heap, panic on allocation failure. */ +void *pmclone(void const *src, size_t size); + +/* strdup(), but panic on allocation failure. */ +char *pstrdup(char const *s); + +#endif /* SRC_ALLOC_H_ */ diff --git a/src/asn1/oid.c b/src/asn1/oid.c index 03cb8594..dc013a5c 100644 --- a/src/asn1/oid.c +++ b/src/asn1/oid.c @@ -1,6 +1,7 @@ #include "oid.h" #include +#include "alloc.h" #include "common.h" #include "log.h" #include "asn1/decode.h" @@ -25,11 +26,8 @@ oid2arcs(OBJECT_IDENTIFIER_t *oid, struct oid_arcs *result) static const size_t MAX_ARCS = 9; ssize_t count; ssize_t count2; - asn_oid_arc_t *tmp; - result->arcs = malloc(MAX_ARCS * sizeof(asn_oid_arc_t)); - if (result->arcs == NULL) - enomem_panic(); + result->arcs = pmalloc(MAX_ARCS * sizeof(asn_oid_arc_t)); count = OBJECT_IDENTIFIER_get_arcs(oid, result->arcs, MAX_ARCS); if (count < 0) { @@ -42,10 +40,8 @@ oid2arcs(OBJECT_IDENTIFIER_t *oid, struct oid_arcs *result) /* If necessary, reallocate arcs array and try again. */ if (count > MAX_ARCS) { - tmp = realloc(result->arcs, count * sizeof(asn_oid_arc_t)); - if (tmp == NULL) - enomem_panic(); - result->arcs = tmp; + result->arcs = prealloc(result->arcs, + count * sizeof(asn_oid_arc_t)); count2 = OBJECT_IDENTIFIER_get_arcs(oid, result->arcs, count); if (count != count2) { diff --git a/src/asn1/signed_data.c b/src/asn1/signed_data.c index 1f7dade3..83b5934e 100644 --- a/src/asn1/signed_data.c +++ b/src/asn1/signed_data.c @@ -3,6 +3,7 @@ #include #include "algorithm.h" +#include "alloc.h" #include "config.h" #include "log.h" #include "oid.h" @@ -414,9 +415,7 @@ signed_data_decode_pkcs7(ANY_t *coded, struct SignedData **result) if (error) return error; - sdata = calloc(1, sizeof(struct SignedData)); - if (sdata == NULL) - enomem_panic(); + sdata = pcalloc(1, sizeof(struct SignedData)); /* Parse content as OCTET STRING */ error = asn1_decode_any(sdata_pkcs7->encapContentInfo.eContent, diff --git a/src/cert_stack.c b/src/cert_stack.c index 0d9246e1..c04857a2 100644 --- a/src/cert_stack.c +++ b/src/cert_stack.c @@ -2,6 +2,7 @@ #include +#include "alloc.h" #include "resource.h" #include "str_token.h" #include "thread_var.h" @@ -103,9 +104,7 @@ certstack_create(struct cert_stack **result) { struct cert_stack *stack; - stack = malloc(sizeof(struct cert_stack)); - if (stack == NULL) - enomem_panic(); + stack = pmalloc(sizeof(struct cert_stack)); stack->x509s = sk_X509_new_null(); if (stack->x509s == NULL) { @@ -187,9 +186,7 @@ deferstack_push(struct cert_stack *stack, struct deferred_cert *deferred) { struct defer_node *node; - node = malloc(sizeof(struct defer_node)); - if (node == NULL) - enomem_panic(); + node = pmalloc(sizeof(struct defer_node)); node->type = DNT_CERT; node->deferred = *deferred; @@ -314,11 +311,9 @@ create_separator(void) { struct defer_node *result; - result = malloc(sizeof(struct defer_node)); - if (result == NULL) - enomem_panic(); - + result = pmalloc(sizeof(struct defer_node)); result->type = DNT_SEPARATOR; + return result; } @@ -332,9 +327,7 @@ x509stack_push(struct cert_stack *stack, struct rpki_uri *uri, X509 *x509, int ok; int error; - meta = malloc(sizeof(struct metadata_node)); - if (meta == NULL) - enomem_panic(); + meta = pmalloc(sizeof(struct metadata_node)); meta->uri = uri; uri_refget(uri); @@ -426,17 +419,12 @@ static char * get_current_file_name(void) { char const *file_name; - char *result; file_name = fnstack_peek(); if (file_name == NULL) pr_crit("The file name stack is empty."); - result = strdup(file_name); - if (result == NULL) - enomem_panic(); - - return result; + return pstrdup(file_name); } /** diff --git a/src/common.c b/src/common.c index 3f2acefd..cb457da1 100644 --- a/src/common.c +++ b/src/common.c @@ -2,13 +2,14 @@ #include /* readdir(), closedir() */ #include /* realpath() */ -#include /* malloc(), free(), realloc(), realpath() */ +#include /* free(), realpath() */ #include /* remove() */ -#include /* strdup(), strrchr(), strcmp(), strcat(), etc */ +#include /* strrchr(), strcmp(), strcat(), etc */ #include /* stat(), rmdir() */ #include /* stat(), mkdir() */ #include /* stat(), closedir(), mkdir() */ +#include "alloc.h" #include "config.h" #include "log.h" @@ -104,13 +105,8 @@ process_file(char const *dir_name, char const *file_name, char const *file_ext, (*fcount)++; /* Increment the found count */ /* Get the full file path */ - tmp = strdup(dir_name); - if (tmp == NULL) - enomem_panic(); - - tmp = realloc(tmp, strlen(tmp) + 1 + strlen(file_name) + 1); - if (tmp == NULL) - enomem_panic(); + tmp = pstrdup(dir_name); + tmp = prealloc(tmp, strlen(tmp) + 1 + strlen(file_name) + 1); strcat(tmp, "/"); strcat(tmp, file_name); @@ -297,9 +293,7 @@ create_dir_recursive(char const *path) if (exist) return 0; - localuri = strdup(path); - if (localuri == NULL) - enomem_panic(); + localuri = pstrdup(path); for (i = 1; localuri[i] != '\0'; i++) { if (localuri[i] == '/') { @@ -361,9 +355,7 @@ delete_dir_recursive_bottom_up(char const *path) if (error) return error; - config_repo = strdup(config_get_local_repository()); - if (config_repo == NULL) - enomem_panic(); + config_repo = pstrdup(config_get_local_repository()); /* Stop dir removal when the work_dir has this length */ config_len = strlen(config_repo); @@ -371,9 +363,7 @@ delete_dir_recursive_bottom_up(char const *path) config_len--; free(config_repo); - work_loc = strdup(path); - if (work_loc == NULL) - enomem_panic(); + work_loc = pstrdup(path); do { tmp = strrchr(work_loc, '/'); @@ -459,9 +449,7 @@ map_uri_to_local(char const *uri, char const *uri_prefix, char const *workspace) if (workspace != NULL) workspace_len = strlen(workspace); - local = malloc(repository_len + extra_slash + workspace_len + uri_len + 1); - if (local == NULL) - enomem_panic(); + local = pmalloc(repository_len + extra_slash + workspace_len + uri_len + 1); offset = 0; strcpy(local + offset, repository); diff --git a/src/config.c b/src/config.c index 0766d6de..743f3d62 100644 --- a/src/config.c +++ b/src/config.c @@ -8,6 +8,7 @@ #include #include +#include "alloc.h" #include "common.h" #include "configure_ac.h" #include "daemon.h" @@ -912,12 +913,8 @@ construct_getopt_options(struct option **_long_opts, char **_short_opts) } /* +1 NULL end, means end of array. */ - long_opts = calloc(total_long_options + 1, sizeof(struct option)); - if (long_opts == NULL) - enomem_panic(); - short_opts = malloc(total_short_options + 1); - if (short_opts == NULL) - enomem_panic(); + long_opts = pcalloc(total_long_options + 1, sizeof(struct option)); + short_opts = pmalloc(total_short_options + 1); *_long_opts = long_opts; *_short_opts = short_opts; @@ -987,11 +984,7 @@ set_default_values(void) */ string_array_init(&rpki_config.server.address, NULL, 0); - - rpki_config.server.port = strdup("323"); - if (rpki_config.server.port == NULL) - enomem_panic(); - + rpki_config.server.port = pstrdup("323"); rpki_config.server.backlog = SOMAXCONN; rpki_config.server.interval.validation = 3600; rpki_config.server.interval.refresh = 3600; @@ -1000,15 +993,11 @@ set_default_values(void) rpki_config.server.deltas_lifetime = 2; rpki_config.tal = NULL; - rpki_config.slurm = NULL; - - rpki_config.local_repository = strdup("/tmp/fort/repository"); - if (rpki_config.local_repository == NULL) - enomem_panic(); - + rpki_config.local_repository = pstrdup("/tmp/fort/repository"); rpki_config.sync_strategy = RSYNC_ROOT_EXCEPT_TA; rpki_config.shuffle_tal_uris = false; rpki_config.maximum_certificate_depth = 32; + rpki_config.slurm = NULL; rpki_config.mode = SERVER; rpki_config.work_offline = false; rpki_config.daemon = false; @@ -1018,23 +1007,18 @@ set_default_values(void) rpki_config.rsync.strategy = RSYNC_ROOT_EXCEPT_TA; rpki_config.rsync.retry.count = 1; rpki_config.rsync.retry.interval = 4; - rpki_config.rsync.program = strdup("rsync"); - if (rpki_config.rsync.program == NULL) - enomem_panic(); - - string_array_init(&rpki_config.rsync.args.recursive, - recursive_rsync_args, ARRAY_LEN(recursive_rsync_args)); + rpki_config.rsync.program = pstrdup("rsync"); string_array_init(&rpki_config.rsync.args.flat, flat_rsync_args, ARRAY_LEN(flat_rsync_args)); + string_array_init(&rpki_config.rsync.args.recursive, + recursive_rsync_args, ARRAY_LEN(recursive_rsync_args)); /* By default, has a higher priority than rsync */ rpki_config.http.enabled = true; rpki_config.http.priority = 60; rpki_config.http.retry.count = 1; rpki_config.http.retry.interval = 4; - rpki_config.http.user_agent = strdup(PACKAGE_NAME "/" PACKAGE_VERSION); - if (rpki_config.http.user_agent == NULL) - enomem_panic(); + rpki_config.http.user_agent = pstrdup(PACKAGE_NAME "/" PACKAGE_VERSION); rpki_config.http.connect_timeout = 30; rpki_config.http.transfer_timeout = 0; rpki_config.http.low_speed_limit = 100000; @@ -1051,28 +1035,21 @@ set_default_values(void) rpki_config.rrdp.retry.count = rpki_config.http.retry.count; rpki_config.rrdp.retry.interval = rpki_config.http.retry.interval; + rpki_config.log.enabled = true; + rpki_config.log.tag = NULL; rpki_config.log.color = false; rpki_config.log.filename_format = FNF_GLOBAL; rpki_config.log.level = LOG_WARNING; rpki_config.log.output = CONSOLE; - - rpki_config.log.enabled = true; - rpki_config.log.output = CONSOLE; - rpki_config.log.level = LOG_WARNING; - rpki_config.log.color = false; - rpki_config.log.filename_format = FNF_GLOBAL; rpki_config.log.facility = LOG_DAEMON; - rpki_config.log.tag = NULL; rpki_config.validation_log.enabled = false; - rpki_config.validation_log.output = CONSOLE; - rpki_config.validation_log.level = LOG_WARNING; + rpki_config.validation_log.tag = pstrdup("Validation"); rpki_config.validation_log.color = false; rpki_config.validation_log.filename_format = FNF_GLOBAL; + rpki_config.validation_log.level = LOG_WARNING; + rpki_config.validation_log.output = CONSOLE; rpki_config.validation_log.facility = LOG_DAEMON; - rpki_config.validation_log.tag = strdup("Validation"); - if (rpki_config.validation_log.tag == NULL) - enomem_panic(); rpki_config.output.roa = NULL; rpki_config.output.bgpsec = NULL; @@ -1080,13 +1057,10 @@ set_default_values(void) rpki_config.asn1_decode_max_stack = 4096; /* 4kB */ rpki_config.stale_repository_period = 43200; /* 12 hours */ - rpki_config.init_tals = false; rpki_config.init_tal_locations = 0; - /* Common scenario is to connect 1 router or a couple of them */ rpki_config.thread_pool.server.max = 20; - /* Usually 5 TALs, let a few more available */ rpki_config.thread_pool.validation.max = 5; } diff --git a/src/config/str.c b/src/config/str.c index f1f5cbfa..99e4227e 100644 --- a/src/config/str.c +++ b/src/config/str.c @@ -3,6 +3,8 @@ #include #include #include + +#include "alloc.h" #include "log.h" #define DEREFERENCE(void_value) (*((char **) void_value)) @@ -33,10 +35,7 @@ string_parse_argv(struct option_field const *field, char const *str, /* Remove the previous value (usually the default). */ __string_free(result); - DEREFERENCE(result) = strdup(str); - if (DEREFERENCE(result) == NULL) - enomem_panic(); - + DEREFERENCE(result) = pstrdup(str); return 0; } diff --git a/src/config/string_array.c b/src/config/string_array.c index 49bd1fac..f61484a9 100644 --- a/src/config/string_array.c +++ b/src/config/string_array.c @@ -5,6 +5,7 @@ #include #include +#include "alloc.h" #include "log.h" #include "str_token.h" #include "config/str.h" @@ -22,17 +23,9 @@ string_array_init(struct string_array *array, char const *const *values, return; } - array->array = calloc(len, sizeof(char *)); - if (array->array == NULL) - enomem_panic(); - - for (i = 0; i < len; i++) { - array->array[i] = strdup(values[i]); - if (array->array[i] == NULL) { - string_array_cleanup(array); - enomem_panic(); - } - } + array->array = pcalloc(len, sizeof(char *)); + for (i = 0; i < len; i++) + array->array[i] = pstrdup(values[i]); } void @@ -104,9 +97,7 @@ string_array_parse_json(struct option_field const *opt, json_t *json, /* Remove the previous value (usually the default). */ __string_array_free(result); - result->array = calloc(len, sizeof(char *)); - if (result->array == NULL) - enomem_panic(); + result->array = pcalloc(len, sizeof(char *)); result->length = len; for (i = 0; i < len; i++) { @@ -115,9 +106,7 @@ string_array_parse_json(struct option_field const *opt, json_t *json, if (error) goto fail; - result->array[i] = strdup(tmp); - if (result->array[i] == NULL) - enomem_panic(); + result->array[i] = pstrdup(tmp); } return 0; @@ -147,9 +136,7 @@ string_array_parse_argv(struct option_field const *opt, char const *str, return pr_op_err("'%s' can have %u elements max; currently it has %lu elements.", opt->name, opt->max, len); - result->array = calloc(len, sizeof(char *)); - if (result->array == NULL) - enomem_panic(); + result->array = pcalloc(len, sizeof(char *)); result->length = len; for (i = 0; string_tokenizer_next(&tokenizer); i++) diff --git a/src/crypto/base64.c b/src/crypto/base64.c index b2e50590..083fea49 100644 --- a/src/crypto/base64.c +++ b/src/crypto/base64.c @@ -5,6 +5,7 @@ #include #include #include +#include "alloc.h" #include "log.h" /** @@ -150,9 +151,7 @@ base64url_decode(char const *str_encoded, unsigned char **result, encoded_len = strlen(str_encoded); pad = (encoded_len % 4) > 0 ? 4 - (encoded_len % 4) : 0; - str_copy = malloc(encoded_len + pad + 1); - if (str_copy == NULL) - enomem_panic(); + str_copy = pmalloc(encoded_len + pad + 1); /* Set all with pad char, then replace with the original string */ memset(str_copy, '=', encoded_len + pad); memcpy(str_copy, str_encoded, encoded_len); @@ -173,11 +172,7 @@ base64url_decode(char const *str_encoded, unsigned char **result, } alloc_size = EVP_DECODE_LENGTH(strlen(str_copy)); - *result = malloc(alloc_size + 1); - if (*result == NULL) - enomem_panic(); - memset(*result, 0, alloc_size); - (*result)[alloc_size] = '\0'; + *result = pzalloc(alloc_size + 1); error = base64_decode(encoded, *result, false, alloc_size, &dec_len); if (error) @@ -216,10 +211,7 @@ to_base64url(char *base, size_t base_len) len = pad - base; } while(0); - tmp = malloc(len + 1); - if (tmp == NULL) - enomem_panic(); - + tmp = pmalloc(len + 1); memcpy(tmp, base, len); tmp[len] = '\0'; diff --git a/src/crypto/hash.c b/src/crypto/hash.c index fa3079ba..0537b4bc 100644 --- a/src/crypto/hash.c +++ b/src/crypto/hash.c @@ -5,6 +5,7 @@ #include #include /* For blksize_t */ +#include "alloc.h" #include "common.h" #include "file.h" #include "log.h" @@ -34,27 +35,24 @@ hash_matches(unsigned char const *expected, size_t expected_len, } static int -hash_file(char const *algorithm, struct rpki_uri *uri, unsigned char *result, - unsigned int *result_len) +hash_file(struct rpki_uri *uri, unsigned char *result, unsigned int *result_len) { - return hash_local_file(algorithm, uri_get_local(uri), result, - result_len); + return hash_local_file(uri_get_local(uri), result, result_len); } int -hash_local_file(char const *algorithm, char const *uri, unsigned char *result, +hash_local_file(char const *uri, unsigned char *result, unsigned int *result_len) { EVP_MD const *md; FILE *file; struct stat stat; unsigned char *buffer; - blksize_t buffer_len; size_t consumed; EVP_MD_CTX *ctx; int error; - error = get_md(algorithm, &md); + error = get_md("sha256", &md); if (error) return error; @@ -62,10 +60,7 @@ hash_local_file(char const *algorithm, char const *uri, unsigned char *result, if (error) return error; - buffer_len = stat.st_blksize; - buffer = malloc(buffer_len); - if (buffer == NULL) - enomem_panic(); + buffer = pmalloc(stat.st_blksize); ctx = EVP_MD_CTX_new(); if (ctx == NULL) @@ -77,7 +72,7 @@ hash_local_file(char const *algorithm, char const *uri, unsigned char *result, } do { - consumed = fread(buffer, 1, buffer_len, file); + consumed = fread(buffer, 1, stat.st_blksize, file); error = ferror(file); if (error) { pr_val_err("File reading error. Error message (apparently): %s", @@ -114,8 +109,7 @@ end: * an incidence to ignore this). */ int -hash_validate_mft_file(char const *algorithm, struct rpki_uri *uri, - BIT_STRING_t const *expected) +hash_validate_mft_file(struct rpki_uri *uri, BIT_STRING_t const *expected) { unsigned char actual[EVP_MAX_MD_SIZE]; unsigned int actual_len; @@ -125,7 +119,7 @@ hash_validate_mft_file(char const *algorithm, struct rpki_uri *uri, return pr_val_err("Hash string has unused bits."); do { - error = hash_file(algorithm, uri, actual, &actual_len); + error = hash_file(uri, actual, &actual_len); if (!error) break; @@ -155,14 +149,14 @@ hash_validate_mft_file(char const *algorithm, struct rpki_uri *uri, * @expected_len. Returns 0 if no errors happened and the hashes match. */ int -hash_validate_file(char const *algorithm, struct rpki_uri *uri, - unsigned char const *expected, size_t expected_len) +hash_validate_file(struct rpki_uri *uri, unsigned char const *expected, + size_t expected_len) { unsigned char actual[EVP_MAX_MD_SIZE]; unsigned int actual_len; int error; - error = hash_file(algorithm, uri, actual, &actual_len); + error = hash_file(uri, actual, &actual_len); if (error) return error; @@ -241,17 +235,6 @@ int hash_str(char const *algorithm, char const *str, unsigned char *result, unsigned int *result_len) { - unsigned char *src; - int error; - - src = malloc(strlen(str)); - if (src == NULL) - enomem_panic(); - - memcpy(src, str, strlen(str)); - - error = hash_buffer(algorithm, src, strlen(str), result, result_len); - - free(src); - return error; + return hash_buffer(algorithm, (unsigned char const *) str, strlen(str), + result, result_len); } diff --git a/src/crypto/hash.h b/src/crypto/hash.h index 31ae305d..744b2431 100644 --- a/src/crypto/hash.h +++ b/src/crypto/hash.h @@ -6,17 +6,14 @@ #include "types/uri.h" #include "asn1/asn1c/BIT_STRING.h" -int hash_validate_mft_file(char const *, struct rpki_uri *uri, - BIT_STRING_t const *); -int hash_validate_file(char const *, struct rpki_uri *, unsigned char const *, - size_t); +int hash_validate_mft_file(struct rpki_uri *uri, BIT_STRING_t const *); +int hash_validate_file(struct rpki_uri *, unsigned char const *, size_t); int hash_validate(char const *, unsigned char const *, size_t, unsigned char const *, size_t); int hash_validate_octet_string(char const *, OCTET_STRING_t const*, OCTET_STRING_t const *); -int hash_local_file(char const *, char const *, unsigned char *, - unsigned int *); +int hash_local_file(char const *, unsigned char *, unsigned int *); int hash_str(char const *, char const *, unsigned char *, unsigned int *); diff --git a/src/delete_dir_daemon.c b/src/delete_dir_daemon.c index f1579385..eb11d712 100644 --- a/src/delete_dir_daemon.c +++ b/src/delete_dir_daemon.c @@ -8,6 +8,7 @@ #include #include #include +#include "alloc.h" #include "common.h" #include "internal_pool.h" #include "log.h" @@ -166,9 +167,7 @@ get_local_path(char const *rcvd, char const *workspace, char **result) if (strrchr(local_path, '/') == local_path + strlen(local_path) - 1) tmp_size--; - tmp = malloc(tmp_size + 1); - if (tmp == NULL) - enomem_panic(); + tmp = pmalloc(tmp_size + 1); strncpy(tmp, local_path, tmp_size); tmp[tmp_size] = '\0'; @@ -192,9 +191,7 @@ rename_local_path(char const *rcvd, char **result) rcvd_size = strlen(rcvd); /* original size + one underscore + hex random val (8 chars) */ tmp_size = rcvd_size + 1 + (sizeof(RAND_MAX) * 2); - tmp = malloc(tmp_size + 1); - if (tmp == NULL) - enomem_panic(); + tmp = pmalloc(tmp_size + 1); /* Rename the path with a random suffix */ random_init(); @@ -246,14 +243,9 @@ rem_dirs_create(size_t arr_len) { struct rem_dirs *tmp; - tmp = malloc(sizeof(struct rem_dirs)); - if (tmp == NULL) - enomem_panic(); - - tmp->arr = calloc(arr_len, sizeof(char *)); - if (tmp->arr == NULL) - enomem_panic(); + tmp = pmalloc(sizeof(struct rem_dirs)); + tmp->arr = pcalloc(arr_len, sizeof(char *)); tmp->arr_len = arr_len; tmp->arr_set = 0; diff --git a/src/file.c b/src/file.c index 3a36d6e7..8548bc91 100644 --- a/src/file.c +++ b/src/file.c @@ -2,6 +2,8 @@ #include #include + +#include "alloc.h" #include "log.h" static int @@ -70,9 +72,7 @@ file_load(char const *file_name, struct file_contents *fc) return error; fc->buffer_size = stat.st_size; - fc->buffer = malloc(fc->buffer_size); - if (fc->buffer == NULL) - enomem_panic(); + fc->buffer = pmalloc(fc->buffer_size); fread_result = fread(fc->buffer, 1, fc->buffer_size, file); if (fread_result < fc->buffer_size) { diff --git a/src/http/http.c b/src/http/http.c index 48a003cf..34298df3 100644 --- a/src/http/http.c +++ b/src/http/http.c @@ -4,6 +4,8 @@ #include #include #include + +#include "alloc.h" #include "common.h" #include "config.h" #include "file.h" @@ -362,9 +364,7 @@ __http_download_file(struct rpki_uri *uri, long *response_code, long ims_value, original_file = uri_get_local(uri); - tmp_file = malloc(strlen(original_file) + strlen(tmp_suffix) + 1); - if (tmp_file == NULL) - enomem_panic(); + tmp_file = pmalloc(strlen(original_file) + strlen(tmp_suffix) + 1); strcpy(tmp_file, original_file); strcat(tmp_file, tmp_suffix); @@ -516,18 +516,11 @@ http_direct_download(char const *remote, char const *dest) FILE *out; long response_code; long cond_met; - char *tmp_file, *tmp; + char *tmp_file; int error; - tmp_file = strdup(dest); - if (tmp_file == NULL) - enomem_panic(); - - tmp = realloc(tmp_file, strlen(tmp_file) + strlen(tmp_suffix) + 1); - if (tmp == NULL) - enomem_panic(); - - tmp_file = tmp; + tmp_file = pstrdup(dest); + tmp_file = prealloc(tmp_file, strlen(tmp_file) + strlen(tmp_suffix) + 1); strcat(tmp_file, tmp_suffix); error = file_write(tmp_file, &out); diff --git a/src/init.c b/src/init.c index 021ed1fc..ff88a7ea 100644 --- a/src/init.c +++ b/src/init.c @@ -5,6 +5,7 @@ #include #include +#include "alloc.h" #include "log.h" #include "http/http.h" @@ -37,9 +38,7 @@ fetch_url(char const *url) extra_slash = (dest_dir[dest_dir_len - 1] == '/') ? 0 : 1; - dest = malloc(dest_dir_len + extra_slash + strlen(dest_file) + 1); - if (dest == NULL) - enomem_panic(); + dest = pmalloc(dest_dir_len + extra_slash + strlen(dest_file) + 1); offset = 0; strcpy(dest + offset, dest_dir); diff --git a/src/json_handler.c b/src/json_handler.c index b6454e5f..5643dd25 100644 --- a/src/json_handler.c +++ b/src/json_handler.c @@ -3,6 +3,7 @@ #include #include +#include "alloc.h" #include "config.h" #include "log.h" #include "config/types.h" @@ -18,9 +19,7 @@ find_json(struct json_t *root, char const *full_name) struct json_t *node; /* strtok_r() needs a non-const string */ - strtok.opt_name = strdup(full_name); - if (strtok.opt_name == NULL) - enomem_panic(); + strtok.opt_name = pstrdup(full_name); node = root; strtok.token = strtok_r(strtok.opt_name, ".", &strtok.saveptr); diff --git a/src/line_file.c b/src/line_file.c index fe29b168..0ce983ce 100644 --- a/src/line_file.c +++ b/src/line_file.c @@ -4,6 +4,7 @@ #include #include +#include "alloc.h" #include "file.h" #include "log.h" @@ -22,9 +23,7 @@ lfile_open(const char *file_name, struct line_file **result) struct line_file *lfile; int error; - lfile = malloc(sizeof(struct line_file)); - if (lfile == NULL) - enomem_panic(); + lfile = pmalloc(sizeof(struct line_file)); lfile->file = fopen(file_name, "r"); if (lfile->file == NULL) { diff --git a/src/object/bgpsec.c b/src/object/bgpsec.c index e6274140..638b3bb3 100644 --- a/src/object/bgpsec.c +++ b/src/object/bgpsec.c @@ -1,5 +1,6 @@ #include "bgpsec.h" +#include "alloc.h" #include "log.h" #include "validation_handler.h" @@ -34,9 +35,7 @@ handle_bgpsec(X509 *cert, unsigned char const *ski, struct resources *resources) if (pub_key == NULL) return val_crypto_err("X509_get_X509_PUBKEY() returned NULL at BGPsec"); - cert_spk = malloc(RK_SPKI_LEN); - if (cert_spk == NULL) - enomem_panic(); + cert_spk = pmalloc(RK_SPKI_LEN); /* Use a temporal pointer, since i2d_X509_PUBKEY moves it */ tmp = cert_spk; diff --git a/src/object/certificate.c b/src/object/certificate.c index 56c3d30d..a75ac7fb 100644 --- a/src/object/certificate.c +++ b/src/object/certificate.c @@ -14,6 +14,7 @@ #include #include "algorithm.h" +#include "alloc.h" #include "config.h" #include "extension.h" #include "log.h" @@ -2259,10 +2260,7 @@ get_rsync_server_uri(struct rpki_uri *src, char **result, size_t *result_len) } } - tmp = malloc(i + 1); - if (tmp == NULL) - enomem_panic(); - + tmp = pmalloc(i + 1); strncpy(tmp, global, i); tmp[i] = '\0'; diff --git a/src/object/manifest.c b/src/object/manifest.c index 56da892c..ecf5d166 100644 --- a/src/object/manifest.c +++ b/src/object/manifest.c @@ -189,7 +189,7 @@ build_rpp(struct Manifest *mft, struct rpki_uri *mft_uri, bool rrdp_workspace, * - Positive value: file doesn't exist and keep validating * manifest. */ - error = hash_validate_mft_file("sha256", uri, &fah->hash); + error = hash_validate_mft_file(uri, &fah->hash); if (error < 0) { uri_refput(uri); goto fail; diff --git a/src/object/name.c b/src/object/name.c index 7c6cb530..90609a36 100644 --- a/src/object/name.c +++ b/src/object/name.c @@ -5,6 +5,7 @@ #include #include +#include "alloc.h" #include "log.h" #include "thread_var.h" @@ -30,10 +31,7 @@ name2string(X509_NAME_ENTRY *name, char **_result) if (data == NULL) return val_crypto_err("X509_NAME_ENTRY_get_data() returned NULL"); - result = malloc(data->length + 1); - if (result == NULL) - enomem_panic(); - + result = pmalloc(data->length + 1); memcpy(result, data->data, data->length); result[data->length] = '\0'; @@ -51,9 +49,7 @@ x509_name_decode(X509_NAME *name, char const *what, int nid; int error; - result = malloc(sizeof(struct rfc5280_name)); - if (result == NULL) - enomem_panic(); + result = pmalloc(sizeof(struct rfc5280_name)); result->commonName = NULL; result->serialNumber = NULL; diff --git a/src/object/tal.c b/src/object/tal.c index a2997ab7..d7aa7f06 100644 --- a/src/object/tal.c +++ b/src/object/tal.c @@ -12,6 +12,7 @@ #include #include +#include "alloc.h" #include "cert_stack.h" #include "common.h" #include "config.h" @@ -79,9 +80,7 @@ uris_init(struct uris *uris) uris->rsync_count = 0; uris->https_count = 0; uris->size = 4; /* Most TALs only define one. */ - uris->array = malloc(uris->size * sizeof(struct rpki_uri *)); - if (uris->array == NULL) - enomem_panic(); + uris->array = pmalloc(uris->size * sizeof(struct rpki_uri *)); } static void @@ -96,7 +95,6 @@ uris_destroy(struct uris *uris) static int uris_add(struct uris *uris, char *uri) { - struct rpki_uri **tmp; struct rpki_uri *new; int error; @@ -113,11 +111,8 @@ uris_add(struct uris *uris, char *uri) if (uris->count + 1 >= uris->size) { uris->size *= 2; - tmp = realloc(uris->array, + uris->array = realloc(uris->array, uris->size * sizeof(struct rpki_uri *)); - if (tmp == NULL) - enomem_panic(); - uris->array = tmp; } uris->array[uris->count++] = new; @@ -232,13 +227,8 @@ base64_sanitize(struct line_file *lfile, char **out) */ original_size = get_spki_orig_size(lfile); new_size = original_size + (original_size / BUF_SIZE); - result = malloc(new_size + 1); - if (result == NULL) - enomem_panic(); - - buf = malloc(BUF_SIZE); - if (buf == NULL) - enomem_panic(); + result = pmalloc(new_size + 1); + buf = pmalloc(BUF_SIZE); fd = lfile_fd(lfile); offset = 0; @@ -280,12 +270,8 @@ base64_sanitize(struct line_file *lfile, char **out) } } /* Reallocate to exact size and add nul char */ - if (offset != new_size) { - eol = realloc(result, offset + 1); - if (eol == NULL) - enomem_panic(); - result = eol; - } + if (offset != new_size) + result = prealloc(result, offset + 1); free(buf); result[offset] = '\0'; @@ -307,9 +293,7 @@ read_spki(struct line_file *lfile, struct tal *tal) int error; alloc_size = get_spki_alloc_size(lfile); - tal->spki = malloc(alloc_size); - if (tal->spki == NULL) - enomem_panic(); + tal->spki = pmalloc(alloc_size); tmp = NULL; error = base64_sanitize(lfile, &tmp); @@ -352,18 +336,13 @@ tal_load(char const *file_name, struct tal **result) return error; } - tal = malloc(sizeof(struct tal)); - if (tal == NULL) - enomem_panic(); + tal = pmalloc(sizeof(struct tal)); tal->file_name = file_name; - uris_init(&tal->uris); - error = read_uris(lfile, &tal->uris); if (error) goto fail; - error = read_spki(lfile, tal); if (error) goto fail; @@ -444,9 +423,7 @@ tal_order_uris(struct tal *tal) /* Now order according to the priority */ http_first = (config_get_http_priority() > config_get_rsync_priority()); - ordered = malloc(tal->uris.size * sizeof(struct rpki_uri *)); - if (ordered == NULL) - enomem_panic(); + ordered = pmalloc(tal->uris.size * sizeof(struct rpki_uri *)); last_rsync = (http_first ? tal->uris.https_count : 0); last_https = (http_first ? 0 : tal->uris.rsync_count); @@ -709,13 +686,9 @@ __do_file_validation(char const *tal_file, void *arg) if (error) return error; - thread = malloc(sizeof(struct validation_thread)); - if (thread == NULL) - enomem_panic(); + thread = pmalloc(sizeof(struct validation_thread)); - thread->tal_file = strdup(tal_file); - if (thread->tal_file == NULL) - enomem_panic(); + thread->tal_file = pstrdup(tal_file); thread->arg = t_param->db; thread->exit_status = -EINTR; thread->retry_local = true; diff --git a/src/object/vcard.c b/src/object/vcard.c index bbaab38d..9d08edb7 100644 --- a/src/object/vcard.c +++ b/src/object/vcard.c @@ -3,6 +3,7 @@ #include #include +#include "alloc.h" #include "log.h" /* @@ -96,13 +97,8 @@ analyze_pos(struct utf8_string *string, size_t pos) static void double_line_size(struct vcard_line *line) { - uint8_t *tmp; - line->str.size *= 2; - tmp = realloc(line->str.val, line->str.size); - if (tmp == NULL) - enomem_panic(); - line->str.val = tmp; + line->str.val = prealloc(line->str.val, line->str.size); } static void @@ -261,9 +257,7 @@ handle_ghostbusters_vcard(OCTET_STRING_t *vcard) line.str.size = 81; /* Okay default, assuming there is no folding. */ line.str.len = 0; - line.str.val = malloc(line.str.size); - if (line.str.val == NULL) - enomem_panic(); + line.str.val = pmalloc(line.str.size); line.octet_string_offset = 0; error = __handle_ghostbusters_vcard(vcard, &line); diff --git a/src/reqs_errors.c b/src/reqs_errors.c index 31b721c8..64e50a8f 100644 --- a/src/reqs_errors.c +++ b/src/reqs_errors.c @@ -5,6 +5,7 @@ #include #include "data_structure/uthash.h" +#include "alloc.h" #include "common.h" #include "config.h" #include "log.h" @@ -51,21 +52,12 @@ error_uri_create(char const *uri, struct error_uri **err_uri) struct error_uri *tmp; int error; - tmp = malloc(sizeof(struct error_uri)); - if (tmp == NULL) - enomem_panic(); - - /* Needed by uthash */ - memset(tmp, 0, sizeof(struct error_uri)); - - tmp->uri = strdup(uri); - if (tmp->uri == NULL) - enomem_panic(); + tmp = pzalloc(sizeof(struct error_uri)); /* Zero needed by uthash */ + tmp->uri = pstrdup(uri); error = get_current_time(&tmp->first_attempt); if (error) goto release_uri; - tmp->log_summary = false; tmp->uri_related = NULL; tmp->ref_by = NULL; diff --git a/src/resource.c b/src/resource.c index d5fee05c..3a881ed4 100644 --- a/src/resource.c +++ b/src/resource.c @@ -3,6 +3,7 @@ #include #include /* UINT32_MAX */ +#include "alloc.h" #include "log.h" #include "sorted_array.h" #include "thread_var.h" @@ -34,9 +35,7 @@ resources_create(bool force_inherit) { struct resources *result; - result = malloc(sizeof(struct resources)); - if (result == NULL) - return NULL; + result = pmalloc(sizeof(struct resources)); result->ip4s = NULL; result->ip6s = NULL; diff --git a/src/rpp.c b/src/rpp.c index 35d317c6..e3c83e6f 100644 --- a/src/rpp.c +++ b/src/rpp.c @@ -1,6 +1,6 @@ #include "rpp.h" -#include +#include "alloc.h" #include "cert_stack.h" #include "log.h" #include "thread_var.h" @@ -55,9 +55,7 @@ rpp_create(void) { struct rpp *result; - result = malloc(sizeof(struct rpp)); - if (result == NULL) - return NULL; + result = pmalloc(sizeof(struct rpp)); uris_init(&result->certs); result->crl.uri = NULL; diff --git a/src/rrdp/db/db_rrdp.c b/src/rrdp/db/db_rrdp.c index 80f353f9..ffb4e412 100644 --- a/src/rrdp/db/db_rrdp.c +++ b/src/rrdp/db/db_rrdp.c @@ -6,6 +6,7 @@ #include #include #include +#include "alloc.h" #include "crypto/hash.h" #include "common.h" #include "log.h" @@ -52,9 +53,7 @@ get_workspace_path(char const *base, char **result) char *ptr; int error; - hash = malloc(HASH_LEN * sizeof(unsigned char)); - if (hash == NULL) - enomem_panic(); + hash = pmalloc(HASH_LEN * sizeof(unsigned char)); hash_len = 0; error = hash_str("sha1", base, hash, &hash_len); @@ -64,9 +63,7 @@ get_workspace_path(char const *base, char **result) } /* Get the first bytes + one slash + NUL char */ - tmp = malloc(OUT_LEN + 2); - if (tmp == NULL) - enomem_panic(); + tmp = pmalloc(OUT_LEN + 2); ptr = tmp; for (i = 0; i < OUT_LEN / 2; i++) { @@ -87,15 +84,11 @@ tal_elem_create(struct tal_elem **elem, char const *name) struct tal_elem *tmp; int error; - tmp = malloc(sizeof(struct tal_elem)); - if (tmp == NULL) - enomem_panic(); + tmp = pmalloc(sizeof(struct tal_elem)); tmp->uris = db_rrdp_uris_create(); tmp->visited = true; - tmp->file_name = strdup(name); - if (tmp->file_name == NULL) - enomem_panic(); + tmp->file_name = pstrdup(name); error = get_workspace_path(name, &tmp->workspace); if (error) { diff --git a/src/rrdp/db/db_rrdp_uris.c b/src/rrdp/db/db_rrdp_uris.c index 1bf0ced6..07ee0f2a 100644 --- a/src/rrdp/db/db_rrdp_uris.c +++ b/src/rrdp/db/db_rrdp_uris.c @@ -4,6 +4,7 @@ #include #include #include "data_structure/uthash.h" +#include "alloc.h" #include "common.h" #include "log.h" #include "thread_var.h" @@ -33,20 +34,10 @@ uris_table_create(char const *uri, char const *session_id, { struct uris_table *tmp; - tmp = malloc(sizeof(struct uris_table)); - if (tmp == NULL) - enomem_panic(); - /* Needed by uthash */ - memset(tmp, 0, sizeof(struct uris_table)); - - tmp->uri = strdup(uri); - if (tmp->uri == NULL) - enomem_panic(); - - tmp->data.session_id = strdup(session_id); - if (tmp->data.session_id == NULL) - enomem_panic(); + tmp = pzalloc(sizeof(struct uris_table)); /* Zero needed by uthash */ + tmp->uri = pstrdup(uri); + tmp->data.session_id = pstrdup(session_id); tmp->data.serial = serial; tmp->last_update = 0; tmp->request_status = req_status; @@ -118,10 +109,7 @@ db_rrdp_uris_create(void) { struct db_rrdp_uri *tmp; - tmp = malloc(sizeof(struct db_rrdp_uri)); - if (tmp == NULL) - enomem_panic(); - + tmp = pmalloc(sizeof(struct db_rrdp_uri)); tmp->table = NULL; tmp->current_workspace = NULL; diff --git a/src/rrdp/rrdp_objects.c b/src/rrdp/rrdp_objects.c index 677987a2..0c7ee998 100644 --- a/src/rrdp/rrdp_objects.c +++ b/src/rrdp/rrdp_objects.c @@ -3,6 +3,7 @@ #include #include #include +#include "alloc.h" #include "log.h" DEFINE_ARRAY_LIST_FUNCTIONS(deltas_head, struct delta_head, ) @@ -118,18 +119,12 @@ update_notification_create(char const *uri) { struct update_notification *result; - result = malloc(sizeof(struct update_notification)); - if (result == NULL) - return NULL; + result = pmalloc(sizeof(struct update_notification)); global_data_init(&result->global_data); doc_data_init(&result->snapshot); deltas_head_init(&result->deltas_list); - result->uri = strdup(uri); - if (result->uri == NULL) { - free(result); - return NULL; - } + result->uri = pstrdup(uri); return result; } @@ -155,10 +150,7 @@ snapshot_create(void) { struct snapshot *tmp; - tmp = malloc(sizeof(struct snapshot)); - if (tmp == NULL) - enomem_panic(); - + tmp = pmalloc(sizeof(struct snapshot)); global_data_init(&tmp->global_data); return tmp; @@ -176,10 +168,7 @@ delta_create(void) { struct delta *tmp; - tmp = malloc(sizeof(struct delta)); - if (tmp == NULL) - enomem_panic(); - + tmp = pmalloc(sizeof(struct delta)); global_data_init(&tmp->global_data); return tmp; @@ -197,10 +186,7 @@ publish_create(void) { struct publish *tmp; - tmp = malloc(sizeof(struct publish)); - if (tmp == NULL) - enomem_panic(); - + tmp = pmalloc(sizeof(struct publish)); doc_data_init(&tmp->doc_data); tmp->content = NULL; tmp->content_len = 0; @@ -221,10 +207,7 @@ withdraw_create(void) { struct withdraw *tmp; - tmp = malloc(sizeof(struct withdraw)); - if (tmp == NULL) - enomem_panic(); - + tmp = pmalloc(sizeof(struct withdraw)); doc_data_init(&tmp->doc_data); return tmp; diff --git a/src/rrdp/rrdp_parser.c b/src/rrdp/rrdp_parser.c index 44f6b0b7..2020b1a5 100644 --- a/src/rrdp/rrdp_parser.c +++ b/src/rrdp/rrdp_parser.c @@ -14,6 +14,7 @@ #include "crypto/hash.h" #include "http/http.h" #include "xml/relax_ng.h" +#include "alloc.h" #include "common.h" #include "file.h" #include "log.h" @@ -148,17 +149,12 @@ base64_sanitize(char *content, char **out) return error; if (original_size <= BUF_SIZE) { - result = strdup(content); - if (result == NULL) - enomem_panic(); - *out = result; + *out = pstrdup(content); return 0; } new_size = original_size + (original_size / BUF_SIZE); - result = malloc(new_size + 1); - if (result == NULL) - enomem_panic(); + result = pmalloc(new_size + 1); offset = 0; while (original_size > 0){ @@ -175,12 +171,8 @@ base64_sanitize(char *content, char **out) } /* Reallocate to exact size and add nul char */ - if (offset != new_size + 1) { - tmp = realloc(result, offset + 1); - if (tmp == NULL) - enomem_panic(); - result = tmp; - } + if (offset != new_size + 1) + result = prealloc(result, offset + 1); result[offset] = '\0'; *out = result; @@ -210,9 +202,7 @@ base64_read(char *content, unsigned char **out, size_t *out_len) } alloc_size = EVP_DECODE_LENGTH(strlen(content)); - result = malloc(alloc_size); - if (result == NULL) - enomem_panic(); + result = pmalloc(alloc_size); error = base64_decode(encoded, result, true, alloc_size, &result_len); if (error) @@ -250,10 +240,7 @@ parse_string(xmlTextReaderPtr reader, char const *attr, char **result) attr, xmlTextReaderConstLocalName(reader)); } - tmp = malloc(xmlStrlen(xml_value) + 1); - if (tmp == NULL) - enomem_panic(); - + tmp = pmalloc(xmlStrlen(xml_value) + 1); memcpy(tmp, xml_value, xmlStrlen(xml_value)); tmp[xmlStrlen(xml_value)] = '\0'; xmlFree(xml_value); @@ -313,10 +300,7 @@ parse_hex_string(xmlTextReaderPtr reader, bool required, char const *attr, } tmp_len = xmlStrlen(xml_value) / 2; - tmp = malloc(tmp_len); - if (tmp == NULL) - enomem_panic(); - memset(tmp, 0, tmp_len); + tmp = pzalloc(tmp_len); ptr = tmp; xml_cur = (char *) xml_value; @@ -491,7 +475,7 @@ parse_publish(xmlTextReaderPtr reader, bool parse_hash, bool hash_required, if (error) goto release_base64; - error = hash_validate_file("sha256", uri, tmp->doc_data.hash, + error = hash_validate_file(uri, tmp->doc_data.hash, tmp->doc_data.hash_len); uri_refput(uri); if (error != 0) { @@ -531,8 +515,8 @@ parse_withdraw(xmlTextReaderPtr reader, struct withdraw **withdraw) if (error) goto release_tmp; - error = hash_validate_file("sha256", uri, - tmp->doc_data.hash, tmp->doc_data.hash_len); + error = hash_validate_file(uri, tmp->doc_data.hash, + tmp->doc_data.hash_len); if (error) goto release_uri; @@ -780,7 +764,7 @@ parse_snapshot(struct rpki_uri *uri, struct proc_upd_args *args) fnstack_push_uri(uri); /* Hash validation */ - error = hash_validate_file("sha256", uri, args->parent->snapshot.hash, + error = hash_validate_file(uri, args->parent->snapshot.hash, args->parent->snapshot.hash_len); if (error) goto pop; @@ -842,7 +826,7 @@ parse_delta(struct rpki_uri *uri, struct delta_head *parents_data, expected_data = &parents_data->doc_data; fnstack_push_uri(uri); - error = hash_validate_file("sha256", uri, expected_data->hash, + error = hash_validate_file(uri, expected_data->hash, expected_data->hash_len); if (error) goto pop_fnstack; diff --git a/src/rsync/rsync.c b/src/rsync/rsync.c index 9c901f58..a24323ee 100644 --- a/src/rsync/rsync.c +++ b/src/rsync/rsync.c @@ -9,6 +9,7 @@ #include #include +#include "alloc.h" #include "common.h" #include "config.h" #include "log.h" @@ -31,11 +32,9 @@ rsync_create(void) { struct uri_list *visited_uris; - visited_uris = malloc(sizeof(struct uri_list)); - if (visited_uris == NULL) - enomem_panic(); - + visited_uris = pmalloc(sizeof(struct uri_list)); SLIST_INIT(visited_uris); + return visited_uris; } @@ -104,10 +103,7 @@ mark_as_downloaded(struct rpki_uri *uri, struct uri_list *visited_uris) { struct uri *node; - node = malloc(sizeof(struct uri)); - if (node == NULL) - enomem_panic(); - + node = pmalloc(sizeof(struct uri)); node->uri = uri; uri_refget(uri); @@ -212,9 +208,7 @@ prepare_rsync(struct rpki_uri *uri, bool is_ta, char ***args, size_t *args_len) * and we need to add the program name (for some reason) and NULL * elements, and replace $REMOTE and $LOCAL. */ - copy_args = calloc(config_args->length + 2, sizeof(char *)); - if (copy_args == NULL) - enomem_panic(); + copy_args = pcalloc(config_args->length + 2, sizeof(char *)); copy_args[0] = config_get_rsync_program(); copy_args[config_args->length + 1] = NULL; @@ -224,14 +218,11 @@ prepare_rsync(struct rpki_uri *uri, bool is_ta, char ***args, size_t *args_len) for (i = 0; i < config_args->length; i++) { if (strcmp(config_args->array[i], "$REMOTE") == 0) - copy_args[i + 1] = strdup(uri_get_global(uri)); + copy_args[i + 1] = pstrdup(uri_get_global(uri)); else if (strcmp(config_args->array[i], "$LOCAL") == 0) - copy_args[i + 1] = strdup(uri_get_local(uri)); + copy_args[i + 1] = pstrdup(uri_get_local(uri)); else - copy_args[i + 1] = strdup(config_args->array[i]); - - if (copy_args[i + 1] == NULL) - enomem_panic(); + copy_args[i + 1] = pstrdup(config_args->array[i]); } *args = copy_args; @@ -287,9 +278,7 @@ log_buffer(char const *buffer, ssize_t read, int type, bool log_operation) #define PRE_RSYNC "[RSYNC exec]: " char *cpy, *cur, *tmp; - cpy = malloc(read + 1); - if (cpy == NULL) - enomem_panic(); + cpy = pmalloc(read + 1); strncpy(cpy, buffer, read); cpy[read] = '\0'; diff --git a/src/rtr/db/db_table.c b/src/rtr/db/db_table.c index cbfea75b..13f6d43e 100644 --- a/src/rtr/db/db_table.c +++ b/src/rtr/db/db_table.c @@ -3,6 +3,7 @@ #include /* AF_INET, AF_INET6 (needed in OpenBSD) */ #include /* AF_INET, AF_INET6 (needed in OpenBSD) */ +#include "alloc.h" #include "log.h" #include "data_structure/uthash.h" @@ -26,12 +27,10 @@ db_table_create(void) { struct db_table *table; - table = malloc(sizeof(struct db_table)); - if (table == NULL) - return NULL; - + table = pmalloc(sizeof(struct db_table)); table->roas = NULL; table->router_keys = NULL; + return table; } @@ -94,10 +93,7 @@ add_roa(struct db_table *table, struct hashable_roa const *stack_new) struct hashable_roa *old; int error; - new = malloc(sizeof(struct hashable_roa)); - if (new == NULL) - enomem_panic(); - memcpy(new, stack_new, sizeof(*new)); + new = pmclone(stack_new, sizeof(struct hashable_roa)); errno = 0; HASH_REPLACE(hh, table->roas, data, sizeof(new->data), new, old); @@ -207,11 +203,7 @@ rtrhandler_handle_router_key(struct db_table *table, struct hashable_key *key; int error; - key = malloc(sizeof(struct hashable_key)); - if (key == NULL) - enomem_panic(); - /* Needed by uthash */ - memset(key, 0, sizeof(struct hashable_key)); + key = pzalloc(sizeof(struct hashable_key)); /* Zero needed by uthash */ router_key_init(&key->data, ski, as, spk); diff --git a/src/rtr/db/delta.c b/src/rtr/db/delta.c index d4f1d178..84c73485 100644 --- a/src/rtr/db/delta.c +++ b/src/rtr/db/delta.c @@ -3,6 +3,7 @@ #include #include /* AF_INET, AF_INET6 (needed in OpenBSD) */ #include /* AF_INET, AF_INET6 (needed in OpenBSD) */ +#include "alloc.h" #include "types/address.h" #include "data_structure/array_list.h" @@ -50,9 +51,7 @@ deltas_create(void) { struct deltas *result; - result = malloc(sizeof(struct deltas)); - if (result == NULL) - enomem_panic(); + result = pmalloc(sizeof(struct deltas)); deltas_v4_init(&result->v4.adds); deltas_v4_init(&result->v4.removes); diff --git a/src/rtr/db/deltas_array.c b/src/rtr/db/deltas_array.c index cae242f8..d733215a 100644 --- a/src/rtr/db/deltas_array.c +++ b/src/rtr/db/deltas_array.c @@ -2,6 +2,7 @@ #include #include +#include "alloc.h" #include "config.h" #include "log.h" @@ -16,17 +17,13 @@ darray_create(void) { struct deltas_array *result; - result = malloc(sizeof(struct deltas_array)); - if (result == NULL) - enomem_panic(); + result = pmalloc(sizeof(struct deltas_array)); - result->array = calloc(config_get_deltas_lifetime(), + result->array = pcalloc(config_get_deltas_lifetime(), sizeof(struct deltas *)); - if (result->array == NULL) - enomem_panic(); - result->len = 0; result->last = UINT_MAX; + return result; } diff --git a/src/rtr/db/vrps.c b/src/rtr/db/vrps.c index 43d7482f..90c61d02 100644 --- a/src/rtr/db/vrps.c +++ b/src/rtr/db/vrps.c @@ -6,6 +6,7 @@ #include #include +#include "alloc.h" #include "common.h" #include "output_printer.h" #include "validation_handler.h" @@ -430,12 +431,10 @@ vrp_ovrd_remove(struct delta_vrp const *delta, void *arg) return 0; } - ptr = malloc(sizeof(struct vrp_node)); - if (ptr == NULL) - enomem_panic(); - + ptr = pmalloc(sizeof(struct vrp_node)); ptr->delta = *delta; SLIST_INSERT_HEAD(filtered_vrps, ptr, next); + return 0; } @@ -461,12 +460,10 @@ router_key_ovrd_remove(struct delta_router_key const *delta, void *arg) } } - ptr = malloc(sizeof(struct rk_node)); - if (ptr == NULL) - enomem_panic(); - + ptr = pmalloc(sizeof(struct rk_node)); ptr->delta = *delta; SLIST_INSERT_HEAD(filtered_keys, ptr, next); + return 0; } diff --git a/src/rtr/err_pdu.c b/src/rtr/err_pdu.c index 7df38d22..0ae225bd 100644 --- a/src/rtr/err_pdu.c +++ b/src/rtr/err_pdu.c @@ -1,6 +1,7 @@ #include "err_pdu.h" #include +#include "alloc.h" #include "pdu_sender.h" #include "log.h" @@ -30,7 +31,7 @@ err_pdu_send(int fd, uint8_t version, rtr_error_code_t code, */ /* Need a clone to remove the const. */ - message = (message_const != NULL) ? strdup(message_const) : NULL; + message = (message_const != NULL) ? pstrdup(message_const) : NULL; send_error_report_pdu(fd, version, code, request, message); free(message); diff --git a/src/rtr/pdu.c b/src/rtr/pdu.c index eb303efb..7524e478 100644 --- a/src/rtr/pdu.c +++ b/src/rtr/pdu.c @@ -5,6 +5,7 @@ #include #include +#include "alloc.h" #include "common.h" #include "log.h" #include "types/address.h" @@ -164,10 +165,7 @@ pdu_load(struct pdu_reader *reader, struct rtr_client *client, return RESPOND_ERROR(err_pdu_send_unsupported_pdu_type( client->fd, client->rtr_version, request)); - request->pdu = malloc(meta->length); - if (request->pdu == NULL) - /* No error report PDU on allocation failures. */ - enomem_panic(); + request->pdu = pmalloc(meta->length); error = meta->from_stream(&header, reader, request->pdu); if (error) { diff --git a/src/rtr/pdu_sender.c b/src/rtr/pdu_sender.c index 17ea92da..e722b763 100644 --- a/src/rtr/pdu_sender.c +++ b/src/rtr/pdu_sender.c @@ -9,6 +9,7 @@ #include #include /* INET_ADDRSTRLEN */ +#include "alloc.h" #include "common.h" #include "config.h" #include "log.h" @@ -292,9 +293,7 @@ send_error_report_pdu(int fd, uint8_t version, uint16_t code, + 4 /* Length of Error Text field */ + pdu.error_message_length; - data = malloc(pdu.header.length); - if (data == NULL) - enomem_panic(); + data = pmalloc(pdu.header.length); len = serialize_error_report_pdu(&pdu, data); if (len != pdu.header.length) diff --git a/src/rtr/primitive_reader.c b/src/rtr/primitive_reader.c index 116811d9..d71af295 100644 --- a/src/rtr/primitive_reader.c +++ b/src/rtr/primitive_reader.c @@ -8,6 +8,7 @@ #include #include +#include "alloc.h" #include "log.h" static int get_octets(unsigned char); @@ -189,9 +190,7 @@ read_string(struct pdu_reader *reader, uint32_t string_len, rtr_char **result) * to be relatively small now. */ - string = malloc(string_len + 1); /* Include NULL chara. */ - if (string == NULL) - enomem_panic(); + string = pmalloc(string_len + 1); /* Include NULL chara. */ memcpy(string, reader->buffer, string_len); reader->buffer += string_len; diff --git a/src/rtr/rtr.c b/src/rtr/rtr.c index 5c0b42bb..7784ad2f 100644 --- a/src/rtr/rtr.c +++ b/src/rtr/rtr.c @@ -12,6 +12,7 @@ #include #include +#include "alloc.h" #include "config.h" #include "types/address.h" #include "data_structure/array_list.h" @@ -84,22 +85,14 @@ parse_address(char const *full_address, char **address, char **service) if (full_address == NULL) { tmp_addr = NULL; - tmp_serv = strdup(config_get_server_port()); - if (tmp_serv == NULL) - enomem_panic(); + tmp_serv = pstrdup(config_get_server_port()); goto done; } ptr = strrchr(full_address, '#'); if (ptr == NULL) { - tmp_addr = strdup(full_address); - if (tmp_addr == NULL) - enomem_panic(); - - tmp_serv = strdup(config_get_server_port()); - if (tmp_serv == NULL) - enomem_panic(); - + tmp_addr = pstrdup(full_address); + tmp_serv = pstrdup(config_get_server_port()); goto done; } @@ -108,17 +101,12 @@ parse_address(char const *full_address, char **address, char **service) full_address); tmp_addr_len = strlen(full_address) - strlen(ptr); - tmp_addr = malloc(tmp_addr_len + 1); - if (tmp_addr == NULL) - enomem_panic(); + tmp_addr = pmalloc(tmp_addr_len + 1); memcpy(tmp_addr, full_address, tmp_addr_len); tmp_addr[tmp_addr_len] = '\0'; - tmp_serv = strdup(ptr + 1); - if (tmp_serv == NULL) - enomem_panic(); - + tmp_serv = pstrdup(ptr + 1); /* Fall through */ done: *address = tmp_addr; @@ -298,7 +286,7 @@ create_server_socket(char const *input_addr, char const *hostname, server.fd = fd; /* Ignore failure; this is just a nice-to-have. */ - server.addr = (input_addr != NULL) ? strdup(input_addr) : NULL; + server.addr = (input_addr != NULL) ? pstrdup(input_addr) : NULL; server_arraylist_add(&servers, &server); return 0; /* Happy path */ @@ -509,9 +497,7 @@ __handle_client_request(struct rtr_client *client) { struct client_request *request; - request = malloc(sizeof(struct client_request)); - if (request == NULL) - enomem_panic(); + request = pmalloc(sizeof(struct client_request)); request->client = client; if (!read_until_block(client->fd, request)) { @@ -602,11 +588,7 @@ fddb_poll(void) unsigned int i; int error; - pollfds = calloc(servers.len + clients.len, sizeof(struct pollfd)); - if (pollfds == NULL) { - enomem_panic(); - return PV_RETRY; - } + pollfds = pcalloc(servers.len + clients.len, sizeof(struct pollfd)); ARRAYLIST_FOREACH(&servers, server, i) init_pollfd(&pollfds[i], server->fd); diff --git a/src/slurm/db_slurm.c b/src/slurm/db_slurm.c index a945e8d3..fb4869fc 100644 --- a/src/slurm/db_slurm.c +++ b/src/slurm/db_slurm.c @@ -4,6 +4,7 @@ #include #include +#include "alloc.h" #include "common.h" #include "crypto/base64.h" #include "data_structure/array_list.h" @@ -63,9 +64,7 @@ slurm_lists_create(void) { struct slurm_lists *cache; - cache = malloc(sizeof(struct slurm_lists)); - if (cache == NULL) - enomem_panic(); + cache = pmalloc(sizeof(struct slurm_lists)); al_filter_prefix_init(&cache->filter_pfx_al); al_assertion_prefix_init(&cache->assertion_pfx_al); @@ -100,9 +99,7 @@ db_slurm_create(struct slurm_csum_list *csums, struct db_slurm **result) struct db_slurm *db; int error; - db = malloc(sizeof(struct db_slurm)); - if (db == NULL) - enomem_panic(); + db = pmalloc(sizeof(struct db_slurm)); error = get_current_time(&db->loaded_date); if (error) { diff --git a/src/slurm/slurm_loader.c b/src/slurm/slurm_loader.c index 525bac33..32bbf252 100644 --- a/src/slurm/slurm_loader.c +++ b/src/slurm/slurm_loader.c @@ -5,6 +5,7 @@ #include /* AF_INET, AF_INET6 (needed in OpenBSD) */ #include /* AF_INET, AF_INET6 (needed in OpenBSD) */ +#include "alloc.h" #include "log.h" #include "config.h" #include "common.h" @@ -131,15 +132,10 @@ __slurm_load_checksums(char const *location, void *arg) { struct slurm_csum_list *list; struct slurm_file_csum *csum; - int error; - csum = malloc(sizeof(struct slurm_file_csum)); - if (csum == NULL) - enomem_panic(); + csum = pmalloc(sizeof(struct slurm_file_csum)); - error = hash_local_file("sha256", location, csum->csum, - &csum->csum_len); - if (error) { + if (hash_local_file(location, csum->csum, &csum->csum_len) != 0) { free(csum); return pr_op_err("Calculating slurm hash"); } diff --git a/src/slurm/slurm_parser.c b/src/slurm/slurm_parser.c index 476a2697..5951bdce 100644 --- a/src/slurm/slurm_parser.c +++ b/src/slurm/slurm_parser.c @@ -10,6 +10,7 @@ #include "crypto/base64.h" #include "algorithm.h" +#include "alloc.h" #include "log.h" #include "json_parser.h" #include "types/address.h" @@ -131,9 +132,7 @@ set_prefix(json_t *object, bool is_assertion, struct slurm_prefix *result, } else if (error) return error; - clone = strdup(str_prefix); - if (clone == NULL) - enomem_panic(); + clone = pstrdup(str_prefix); token = strtok(clone, "/"); isv4 = strchr(token, ':') == NULL; diff --git a/src/sorted_array.c b/src/sorted_array.c index 6e535f66..add39180 100644 --- a/src/sorted_array.c +++ b/src/sorted_array.c @@ -3,6 +3,8 @@ #include #include #include + +#include "alloc.h" #include "log.h" struct sorted_array { @@ -24,15 +26,9 @@ sarray_create(size_t elem_size, sarray_cmp cmp) { struct sorted_array *result; - result = malloc(sizeof(struct sorted_array)); - if (result == NULL) - return NULL; + result = pmalloc(sizeof(struct sorted_array)); - result->array = calloc(8, elem_size); - if (result->array == NULL) { - free(result); - return NULL; - } + result->array = pcalloc(8, elem_size); result->count = 0; result->len = 8; result->size = elem_size; @@ -105,17 +101,14 @@ int sarray_add(struct sorted_array *sarray, void *element) { int error; - void *tmp; error = compare(sarray, element); if (error) return error; if (sarray->count >= sarray->len) { - tmp = realloc(sarray->array, 2 * sarray->len * sarray->size); - if (tmp == NULL) - enomem_panic(); - sarray->array = tmp; + sarray->array = realloc(sarray->array, + 2 * sarray->len * sarray->size); sarray->len *= 2; } diff --git a/src/state.c b/src/state.c index 7a027904..9628a555 100644 --- a/src/state.c +++ b/src/state.c @@ -2,6 +2,7 @@ #include #include "rrdp/db/db_rrdp.h" +#include "alloc.h" #include "log.h" #include "thread_var.h" @@ -94,9 +95,7 @@ validation_prepare(struct validation **out, struct tal *tal, X509_VERIFY_PARAM *params; int error; - result = malloc(sizeof(struct validation)); - if (!result) - enomem_panic(); + result = pmalloc(sizeof(struct validation)); error = state_store(result); if (error) diff --git a/src/str_token.c b/src/str_token.c index 750dca51..0ecad62c 100644 --- a/src/str_token.c +++ b/src/str_token.c @@ -2,6 +2,8 @@ #include #include + +#include "alloc.h" #include "log.h" /** @@ -12,9 +14,7 @@ string_clone(void const *string, size_t size) { char *result; - result = malloc(size + 1); - if (result == NULL) - enomem_panic(); + result = pmalloc(size + 1); memcpy(result, string, size); result[size] = '\0'; @@ -52,9 +52,7 @@ BN2string(BIGNUM *bn, char **_result) } written = BIO_number_written(bio); - result = malloc(written + 1); - if (result == NULL) - enomem_panic(); + result = pmalloc(written + 1); BIO_read(bio, result, written); result[written] = '\0'; diff --git a/src/thread/thread_pool.c b/src/thread/thread_pool.c index b9cb1b2f..8f56aca7 100644 --- a/src/thread/thread_pool.c +++ b/src/thread/thread_pool.c @@ -4,6 +4,7 @@ #include #include #include +#include "alloc.h" #include "common.h" #include "log.h" @@ -115,9 +116,7 @@ task_create(char const *name, thread_pool_task_cb cb, void *arg) { struct thread_pool_task *task; - task = malloc(sizeof(struct thread_pool_task)); - if (task == NULL) - enomem_panic(); + task = pmalloc(sizeof(struct thread_pool_task)); task->name = name; task->cb = cb; @@ -297,9 +296,7 @@ thread_pool_create(char const *name, unsigned int threads, struct thread_pool *result; int error; - result = malloc(sizeof(struct thread_pool)); - if (result == NULL) - enomem_panic(); + result = pmalloc(sizeof(struct thread_pool)); /* Init locking */ error = pthread_mutex_init(&result->lock, NULL); @@ -330,9 +327,7 @@ thread_pool_create(char const *name, unsigned int threads, result->stop = false; result->working_count = 0; result->thread_count = 0; - result->thread_ids = calloc(threads, sizeof(pthread_t)); - if (result->thread_ids == NULL) - enomem_panic(); + result->thread_ids = pcalloc(threads, sizeof(pthread_t)); result->thread_ids_len = threads; error = spawn_threads(result); diff --git a/src/thread_var.c b/src/thread_var.c index 1dbb7422..4dcbe5fb 100644 --- a/src/thread_var.c +++ b/src/thread_var.c @@ -8,6 +8,7 @@ #include #include +#include "alloc.h" #include "config.h" static pthread_key_t state_key; @@ -113,14 +114,9 @@ fnstack_init(void) struct filename_stack *files; int error; - files = malloc(sizeof(struct filename_stack)); - if (files == NULL) - enomem_panic(); - - files->filenames = malloc(32 * sizeof(char *)); - if (files->filenames == NULL) - enomem_panic(); + files = pmalloc(sizeof(struct filename_stack)); + files->filenames = pmalloc(32 * sizeof(char *)); files->len = 0; files->size = 32; @@ -176,17 +172,14 @@ void fnstack_push(char const *file) { struct filename_stack *files; - char const **tmp; files = pthread_getspecific(filenames_key); if (files == NULL || files->filenames == NULL) return; if (files->len >= files->size) { - tmp = realloc(files->filenames, 2 * files->size * sizeof(char *)); - if (tmp == NULL) - enomem_panic(); - files->filenames = tmp; + files->filenames = prealloc(files->filenames, + 2 * files->size * sizeof(char *)); files->size *= 2; } @@ -238,9 +231,7 @@ working_repo_init(void) struct working_repo *repo; int error; - repo = malloc(sizeof(struct working_repo)); - if (repo == NULL) - enomem_panic(); + repo = pmalloc(sizeof(struct working_repo)); repo->uri = NULL; repo->level = 0; diff --git a/src/types/uri.c b/src/types/uri.c index a24c5243..07c65dc9 100644 --- a/src/types/uri.c +++ b/src/types/uri.c @@ -3,6 +3,7 @@ #include #include #include "rrdp/db/db_rrdp_uris.h" +#include "alloc.h" #include "common.h" #include "config.h" #include "log.h" @@ -124,9 +125,7 @@ str2global(char const *str, size_t str_len, struct rpki_uri *uri) return error; } - uri->global = malloc(str_len + 1); - if (uri->global == NULL) - enomem_panic(); + uri->global = pmalloc(str_len + 1); strncpy(uri->global, str, str_len); uri->global[str_len] = '\0'; uri->global_len = str_len; @@ -203,9 +202,7 @@ ia5str2global(struct rpki_uri *uri, char const *mft, IA5String_t *ia5) return pr_val_err("Manifest URL '%s' contains no slashes.", mft); dir_len = (slash_pos + 1) - mft; - joined = malloc(dir_len + ia5->size + 1); - if (joined == NULL) - enomem_panic(); + joined = pmalloc(dir_len + ia5->size + 1); strncpy(joined, mft, dir_len); strncpy(joined + dir_len, (char *) ia5->buf, ia5->size); @@ -281,17 +278,12 @@ static char * get_local_workspace(void) { char const *workspace; - char *tmp; workspace = db_rrdp_uris_workspace_get(); if (workspace == NULL) return NULL; - tmp = strdup(workspace); - if (tmp == NULL) - enomem_panic(); - - return tmp; + return pstrdup(workspace); } /** @@ -345,9 +337,7 @@ uri_create(struct rpki_uri **result, uint8_t flags, void const *guri, struct rpki_uri *uri; int error; - uri = malloc(sizeof(struct rpki_uri)); - if (uri == NULL) - enomem_panic(); + uri = pmalloc(sizeof(struct rpki_uri)); error = str2global(guri, guri_len, uri); if (error) { @@ -413,9 +403,7 @@ uri_create_mft(struct rpki_uri **result, struct rpki_uri *mft, IA5String_t *ia5, uint8_t flags; int error; - uri = malloc(sizeof(struct rpki_uri)); - if (uri == NULL) - enomem_panic(); + uri = pmalloc(sizeof(struct rpki_uri)); error = ia5str2global(uri, mft->global, ia5); if (error) { diff --git a/src/visited_uris.c b/src/visited_uris.c index ee609359..e935e6e2 100644 --- a/src/visited_uris.c +++ b/src/visited_uris.c @@ -3,6 +3,7 @@ #include #include #include +#include "alloc.h" #include "log.h" #include "delete_dir_daemon.h" #include "data_structure/array_list.h" @@ -27,17 +28,8 @@ visited_elem_create(char const *uri) { struct visited_elem *tmp; - tmp = malloc(sizeof(struct visited_elem)); - if (tmp == NULL) - enomem_panic(); - /* Needed by uthash */ - memset(tmp, 0, sizeof(struct visited_elem)); - - tmp->uri = strdup(uri); - if (tmp->uri == NULL) { - free(tmp); - enomem_panic(); - } + tmp = pzalloc(sizeof(struct visited_elem)); /* Zero needed by uthash */ + tmp->uri = pstrdup(uri); return tmp; } @@ -54,9 +46,7 @@ visited_uris_create(void) { struct visited_uris *tmp; - tmp = malloc(sizeof(struct visited_uris)); - if (tmp == NULL) - enomem_panic(); + tmp = pmalloc(sizeof(struct visited_uris)); tmp->table = NULL; tmp->refs = 1; @@ -130,9 +120,7 @@ visited_uris_to_arr(struct visited_uris *uris, struct uris_roots *roots) for (elem = uris->table; elem != NULL; elem = elem->hh.next) { last_slash = strrchr(elem->uri, '/'); size = last_slash - elem->uri; - tmp = malloc(size + 1); - if (tmp == NULL) - enomem_panic(); + tmp = pmalloc(size + 1); strncpy(tmp, elem->uri, size); tmp[size] = '\0'; uris_roots_add(roots, &tmp); diff --git a/test/line_file_test.c b/test/line_file_test.c index 4a37b614..591412e4 100644 --- a/test/line_file_test.c +++ b/test/line_file_test.c @@ -2,6 +2,7 @@ #include #include +#include "alloc.c" #include "file.c" #include "impersonator.c" #include "line_file.c" diff --git a/test/rrdp_objects_test.c b/test/rrdp_objects_test.c index 294f964b..d99c36c2 100644 --- a/test/rrdp_objects_test.c +++ b/test/rrdp_objects_test.c @@ -2,6 +2,7 @@ #include #include +#include "alloc.c" #include "impersonator.c" #include "log.c" #include "rrdp/rrdp_objects.c" diff --git a/test/rsync_test.c b/test/rsync_test.c index 3bcdcf55..e46d88ba 100644 --- a/test/rsync_test.c +++ b/test/rsync_test.c @@ -2,6 +2,7 @@ #include #include +#include "alloc.c" #include "common.c" #include "log.c" #include "impersonator.c" diff --git a/test/rtr/db/db_table_test.c b/test/rtr/db/db_table_test.c index 2122f9b7..6a202835 100644 --- a/test/rtr/db/db_table_test.c +++ b/test/rtr/db/db_table_test.c @@ -1,6 +1,7 @@ #include #include +#include "alloc.c" #include "common.c" #include "log.c" #include "impersonator.c" diff --git a/test/rtr/db/deltas_array_test.c b/test/rtr/db/deltas_array_test.c index fbfd7a75..21fa6c1d 100644 --- a/test/rtr/db/deltas_array_test.c +++ b/test/rtr/db/deltas_array_test.c @@ -1,6 +1,7 @@ #include #include +#include "alloc.c" #include "log.c" #include "impersonator.c" #include "types/address.c" diff --git a/test/rtr/db/vrps_test.c b/test/rtr/db/vrps_test.c index db6a81f6..2172c44a 100644 --- a/test/rtr/db/vrps_test.c +++ b/test/rtr/db/vrps_test.c @@ -4,6 +4,7 @@ #include "crypto/base64.c" #include "algorithm.c" +#include "alloc.c" #include "common.c" #include "file.c" #include "impersonator.c" diff --git a/test/rtr/pdu_handler_test.c b/test/rtr/pdu_handler_test.c index 29694df7..40dbe658 100644 --- a/test/rtr/pdu_handler_test.c +++ b/test/rtr/pdu_handler_test.c @@ -4,6 +4,7 @@ #include #include "algorithm.c" +#include "alloc.c" #include "common.c" #include "file.c" #include "impersonator.c" diff --git a/test/rtr/pdu_test.c b/test/rtr/pdu_test.c index 284cab26..c7347504 100644 --- a/test/rtr/pdu_test.c +++ b/test/rtr/pdu_test.c @@ -2,6 +2,7 @@ #include #include +#include "alloc.c" #include "common.c" #include "log.c" #include "impersonator.c" diff --git a/test/rtr/primitive_reader_test.c b/test/rtr/primitive_reader_test.c index 779c12e5..1f7a9dad 100644 --- a/test/rtr/primitive_reader_test.c +++ b/test/rtr/primitive_reader_test.c @@ -5,6 +5,7 @@ #include #include +#include "alloc.c" #include "impersonator.c" #include "log.c" #include "rtr/primitive_reader.c" diff --git a/test/tal_test.c b/test/tal_test.c index 907cbc01..03517872 100644 --- a/test/tal_test.c +++ b/test/tal_test.c @@ -5,6 +5,7 @@ #include #include "common.h" +#include "alloc.c" #include "file.c" #include "impersonator.c" #include "line_file.c" diff --git a/test/thread_pool_test.c b/test/thread_pool_test.c index 78138264..5ef0da58 100644 --- a/test/thread_pool_test.c +++ b/test/thread_pool_test.c @@ -2,6 +2,7 @@ #include #include +#include "alloc.c" #include "common.c" #include "log.c" #include "impersonator.c" diff --git a/test/types/address_test.c b/test/types/address_test.c index 7636386e..90e70c8a 100644 --- a/test/types/address_test.c +++ b/test/types/address_test.c @@ -2,6 +2,7 @@ #include #include +#include "alloc.c" #include "common.c" #include "log.c" #include "impersonator.c" diff --git a/test/types/uri_test.c b/test/types/uri_test.c index 6604d2e6..139d7669 100644 --- a/test/types/uri_test.c +++ b/test/types/uri_test.c @@ -2,6 +2,7 @@ #include #include +#include "alloc.c" #include "common.c" #include "log.c" #include "impersonator.c" diff --git a/test/vcard_test.c b/test/vcard_test.c index 8ccf7415..0f03b9a9 100644 --- a/test/vcard_test.c +++ b/test/vcard_test.c @@ -1,5 +1,6 @@ #include +#include "alloc.c" #include "log.c" #include "impersonator.c" #include "object/vcard.c"