diff options
author | Thomas Haller <thaller@redhat.com> | 2014-03-12 12:06:20 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2014-04-10 16:27:02 +0200 |
commit | ec7fc72e67302ee3e2a67753affe8b91187b5e0d (patch) | |
tree | 8a78268f000471427812f19d6e57cd96cf9c1b71 | |
parent | 0a9cfb48ff7652d40d27f117269bf07ce17cfb0e (diff) | |
download | NetworkManager-ec7fc72e67302ee3e2a67753affe8b91187b5e0d.tar.gz |
core: add ASSERT_VALID_PATH_COMPONENT function
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r-- | src/NetworkManagerUtils.c | 32 | ||||
-rw-r--r-- | src/NetworkManagerUtils.h | 1 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index d41bf169bc..553dfc5262 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -1052,3 +1052,35 @@ nm_utils_ip6_property_path (const char *ifname, const char *property) return path; } + +const char * +ASSERT_VALID_PATH_COMPONENT (const char *name) +{ + const char *n; + + if (name == NULL || name[0] == '\0') + goto fail; + + if (name[0] == '.') { + if (name[1] == '\0') + goto fail; + if (name[1] == '.' && name[2] == '\0') + goto fail; + } + n = name; + do { + if (*n == '/') + goto fail; + } while (*(++n) != '\0'); + + return name; +fail: + if (name) + nm_log_err (LOGD_CORE, "Failed asserting path component: NULL"); + else + nm_log_err (LOGD_CORE, "Failed asserting path component: \"%s\"", name); + g_assert_not_reached (); + g_return_val_if_reached ("XXXXX"); + return "XXXXX"; +} + diff --git a/src/NetworkManagerUtils.h b/src/NetworkManagerUtils.h index cf55b07790..18a0d90fee 100644 --- a/src/NetworkManagerUtils.h +++ b/src/NetworkManagerUtils.h @@ -108,6 +108,7 @@ gint64 nm_utils_get_monotonic_timestamp_us (void); gint64 nm_utils_get_monotonic_timestamp_ms (void); gint32 nm_utils_get_monotonic_timestamp_s (void); +const char *ASSERT_VALID_PATH_COMPONENT (const char *name) G_GNUC_WARN_UNUSED_RESULT; const char *nm_utils_ip6_property_path (const char *ifname, const char *property); #endif /* NETWORK_MANAGER_UTILS_H */ |