From: Zbigniew Jędrzejewski-Szmek Date: Thu, 21 Mar 2019 09:54:24 +0000 (+0100) Subject: nspawn-oci: add helper function for free_and_strdup with oom check X-Git-Tag: v242-rc1~98^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f1531db5af1d8e740d5fa393dfafc115a13c0831;p=thirdparty%2Fsystemd.git nspawn-oci: add helper function for free_and_strdup with oom check --- diff --git a/src/basic/string-util.h b/src/basic/string-util.h index b0909dddca9..9cf11198b12 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -180,6 +180,11 @@ char *strrep(const char *s, unsigned n); int split_pair(const char *s, const char *sep, char **l, char **r); int free_and_strdup(char **p, const char *s); +static inline int free_and_strdup_warn(char **p, const char *s) { + if (free_and_strdup(p, s) < 0) + return log_oom(); + return 0; +} int free_and_strndup(char **p, const char *s, size_t l); char *string_erase(char *x); diff --git a/src/nspawn/nspawn-oci.c b/src/nspawn/nspawn-oci.c index 12937961b9c..2193439a35a 100644 --- a/src/nspawn/nspawn-oci.c +++ b/src/nspawn/nspawn-oci.c @@ -124,7 +124,6 @@ static int oci_console_size(const char *name, JsonVariant *v, JsonDispatchFlags static int oci_absolute_path(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { char **p = userdata; const char *n; - int r; assert(p); @@ -134,11 +133,7 @@ static int oci_absolute_path(const char *name, JsonVariant *v, JsonDispatchFlags return json_log(v, flags, SYNTHETIC_ERRNO(EINVAL), "Path in JSON field '%s' is not absolute: %s", strna(name), n); - r = free_and_strdup(p, n); - if (r < 0) - return log_oom(); - - return 0; + return free_and_strdup_warn(p, n); } static int oci_env(const char *name, JsonVariant *v, JsonDispatchFlags flags, void *userdata) { @@ -479,10 +474,7 @@ static int oci_hostname(const char *name, JsonVariant *v, JsonDispatchFlags flag return json_log(v, flags, SYNTHETIC_ERRNO(EINVAL), "Hostname string is not a valid hostname: %s", n); - if (free_and_strdup(&s->hostname, n) < 0) - return log_oom(); - - return 0; + return free_and_strdup_warn(&s->hostname, n); } static bool oci_exclude_mount(const char *path) {