diff options
author | Thomas Haller <thaller@redhat.com> | 2017-01-03 15:28:22 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-01-03 15:42:53 +0100 |
commit | 8006045d0de717059c70feed0a845a8ee7ddb7db (patch) | |
tree | 3d1fd0b09e8017f6428d34bcf4e4c4e87817341f | |
parent | 32dd257d31694523b735780090f889298c175e8c (diff) | |
download | NetworkManager-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.c | 12 | ||||
-rw-r--r-- | src/nm-exported-object.h | 2 |
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); |