From 633deb0a9899da513bb69d5d121f6c826abe6081 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 6 Aug 2015 17:06:42 +0200 Subject: [PATCH] utils: add nm_utils_is_valid_path_component() --- src/NetworkManagerUtils.c | 23 +++++++++++++++-------- src/NetworkManagerUtils.h | 1 + 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index eae6812f63..ab654f3569 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -2721,28 +2721,35 @@ nm_utils_ip4_property_path (const char *ifname, const char *property) return _get_property_path (ifname, property, FALSE); } -const char * -ASSERT_VALID_PATH_COMPONENT (const char *name) +gboolean +nm_utils_is_valid_path_component (const char *name) { const char *n; if (name == NULL || name[0] == '\0') - goto fail; + return FALSE; if (name[0] == '.') { if (name[1] == '\0') - goto fail; + return FALSE; if (name[1] == '.' && name[2] == '\0') - goto fail; + return FALSE; } n = name; do { if (*n == '/') - goto fail; + return FALSE; } while (*(++n) != '\0'); - return name; -fail: + return TRUE; +} + +const char * +ASSERT_VALID_PATH_COMPONENT (const char *name) +{ + if (G_LIKELY (nm_utils_is_valid_path_component (name))) + return name; + nm_log_err (LOGD_CORE, "Failed asserting path component: %s%s%s", NM_PRINT_FMT_QUOTED (name, "\"", name, "\"", "(null)")); g_error ("FATAL: Failed asserting path component: %s%s%s", diff --git a/src/NetworkManagerUtils.h b/src/NetworkManagerUtils.h index 0d47bce9b6..f79006f60a 100644 --- a/src/NetworkManagerUtils.h +++ b/src/NetworkManagerUtils.h @@ -186,6 +186,7 @@ gint64 nm_utils_get_monotonic_timestamp_ms (void); gint32 nm_utils_get_monotonic_timestamp_s (void); gint64 nm_utils_monotonic_timestamp_as_boottime (gint64 timestamp, gint64 timestamp_ticks_per_ns); +gboolean nm_utils_is_valid_path_component (const char *name); const char *ASSERT_VALID_PATH_COMPONENT (const char *name); const char *nm_utils_ip6_property_path (const char *ifname, const char *property); const char *nm_utils_ip4_property_path (const char *ifname, const char *property);