summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-01-03 15:28:22 +0100
committerThomas Haller <thaller@redhat.com>2017-01-03 15:42:53 +0100
commit8006045d0de717059c70feed0a845a8ee7ddb7db (patch)
tree3d1fd0b09e8017f6428d34bcf4e4c4e87817341f
parent32dd257d31694523b735780090f889298c175e8c (diff)
downloadNetworkManager-8006045d0de717059c70feed0a845a8ee7ddb7db.tar.gz
exported-object: make export_path D-Bus counter 64 bit
An overflow of the 32 bit guint is possible and rather ugly because the D-Bus path should be unique and not repeat. Avoid that by extending the counter to 64 bit.
-rw-r--r--src/nm-exported-object.c12
-rw-r--r--src/nm-exported-object.h2
2 files changed, 8 insertions, 6 deletions
diff --git a/src/nm-exported-object.c b/src/nm-exported-object.c
index f3831c8f67..47430bb350 100644
--- a/src/nm-exported-object.c
+++ b/src/nm-exported-object.c
@@ -564,7 +564,7 @@ _create_export_path (NMExportedObjectClass *klass)
{
const char *class_export_path, *p;
static GHashTable *prefix_counters;
- guint *counter;
+ guint64 *counter;
class_export_path = klass->export_path;
@@ -575,17 +575,19 @@ _create_export_path (NMExportedObjectClass *klass)
if (G_UNLIKELY (!prefix_counters))
prefix_counters = g_hash_table_new (g_str_hash, g_str_equal);
- g_assert (p[1] == 'u');
- g_assert (strchr (p + 1, '%') == NULL);
+ nm_assert (p[1] == 'l');
+ nm_assert (p[2] == 'l');
+ nm_assert (p[3] == 'u');
+ nm_assert (p[4] == '\0');
counter = g_hash_table_lookup (prefix_counters, class_export_path);
if (!counter) {
- counter = g_slice_new0 (guint);
+ counter = g_slice_new0 (guint64);
g_hash_table_insert (prefix_counters, g_strdup (class_export_path), counter);
}
NM_PRAGMA_WARNING_DISABLE("-Wformat-nonliteral")
- return g_strdup_printf (class_export_path, (*counter)++);
+ return g_strdup_printf (class_export_path, (long long unsigned) (*counter)++);
NM_PRAGMA_WARNING_REENABLE
}
diff --git a/src/nm-exported-object.h b/src/nm-exported-object.h
index 3bb2536764..7d3481296f 100644
--- a/src/nm-exported-object.h
+++ b/src/nm-exported-object.h
@@ -23,7 +23,7 @@
/*****************************************************************************/
-#define NM_EXPORT_PATH_NUMBERED(basepath) ""basepath"/%u"
+#define NM_EXPORT_PATH_NUMBERED(basepath) ""basepath"/%llu"
char *nm_exported_object_skeletonify_method_name (const char *dbus_method_name);