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 /src/nm-exported-object.c | |
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.
Diffstat (limited to 'src/nm-exported-object.c')
-rw-r--r-- | src/nm-exported-object.c | 12 |
1 files changed, 7 insertions, 5 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 } |