summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2014-03-12 12:06:20 +0100
committerThomas Haller <thaller@redhat.com>2014-04-10 16:27:02 +0200
commitec7fc72e67302ee3e2a67753affe8b91187b5e0d (patch)
tree8a78268f000471427812f19d6e57cd96cf9c1b71
parent0a9cfb48ff7652d40d27f117269bf07ce17cfb0e (diff)
downloadNetworkManager-ec7fc72e67302ee3e2a67753affe8b91187b5e0d.tar.gz
core: add ASSERT_VALID_PATH_COMPONENT function
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r--src/NetworkManagerUtils.c32
-rw-r--r--src/NetworkManagerUtils.h1
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 */