From 9b85e1ab3dbf0d9344562c5c76114496e3ebaa3a Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Wed, 2 Jun 2021 12:56:06 +0200 Subject: libxtables: Introduce xtables_strdup() and use it everywhere This wraps strdup(), checking for errors. Signed-off-by: Phil Sutter --- libxtables/xtables.c | 12 ++++++++++++ libxtables/xtoptions.c | 14 +++----------- 2 files changed, 15 insertions(+), 11 deletions(-) (limited to 'libxtables') diff --git a/libxtables/xtables.c b/libxtables/xtables.c index 82815cae..77bc1493 100644 --- a/libxtables/xtables.c +++ b/libxtables/xtables.c @@ -369,6 +369,18 @@ void *xtables_realloc(void *ptr, size_t size) return p; } +char *xtables_strdup(const char *s) +{ + char *dup = strdup(s); + + if (!dup) { + perror("ip[6]tables: strdup failed"); + exit(1); + } + + return dup; +} + static char *get_modprobe(void) { int procfile; diff --git a/libxtables/xtoptions.c b/libxtables/xtoptions.c index 0dcdf607..9d3ac5c8 100644 --- a/libxtables/xtoptions.c +++ b/libxtables/xtoptions.c @@ -604,9 +604,7 @@ static void xtopt_parse_mport(struct xt_option_call *cb) unsigned int maxiter; int value; - wp_arg = lo_arg = strdup(cb->arg); - if (lo_arg == NULL) - xt_params->exit_err(RESOURCE_PROBLEM, "strdup"); + wp_arg = lo_arg = xtables_strdup(cb->arg); maxiter = entry->size / esize; if (maxiter == 0) @@ -747,9 +745,7 @@ static void xtopt_parse_hostmask(struct xt_option_call *cb) xtopt_parse_host(cb); return; } - work = strdup(orig_arg); - if (work == NULL) - xt_params->exit_err(PARAMETER_PROBLEM, "strdup"); + work = xtables_strdup(orig_arg); p = strchr(work, '/'); /* by def this can't be NULL now */ *p++ = '\0'; /* @@ -1139,11 +1135,7 @@ struct xtables_lmap *xtables_lmap_init(const char *file) goto out; } lmap_this->id = id; - lmap_this->name = strdup(cur); - if (lmap_this->name == NULL) { - free(lmap_this); - goto out; - } + lmap_this->name = xtables_strdup(cur); lmap_this->next = NULL; if (lmap_prev != NULL) -- cgit v1.2.3