]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bus-polkit: port polkit_registry to use value destructors in hash_ops
authorLennart Poettering <lennart@poettering.net>
Fri, 24 Nov 2023 09:56:28 +0000 (10:56 +0100)
committerLuca Boccassi <bluca@debian.org>
Wed, 3 Jan 2024 10:53:52 +0000 (11:53 +0100)
15 files changed:
src/core/dbus.c
src/home/homed-manager.c
src/hostname/hostnamed.c
src/import/importd.c
src/locale/localed-util.c
src/login/logind.c
src/machine/machined.c
src/network/networkd-manager.c
src/oom/oomd-manager.c
src/portable/portabled.c
src/resolve/resolved-manager.c
src/shared/bus-polkit.c
src/shared/bus-polkit.h
src/timedate/timedated.c
src/timesync/timesyncd-manager.c

index f7d4a97096215dd4a8a4d27e836b7a4e0b73845a..e24c5bbc53394140e9a5276b01d3642b9c8ad1e8 100644 (file)
@@ -1073,7 +1073,7 @@ void bus_done(Manager *m) {
         assert(!m->subscribed);
 
         m->deserialized_subscribed = strv_free(m->deserialized_subscribed);
-        bus_verify_polkit_async_registry_free(m->polkit_registry);
+        m->polkit_registry = hashmap_free(m->polkit_registry);
 }
 
 int bus_fdset_add_all(Manager *m, FDSet *fds) {
index c4525310fc20ff7944a644d6634edbf5d96a0bed..94b2ea5181a16b25e3872b8836728801142f209d 100644 (file)
@@ -268,7 +268,7 @@ Manager* manager_free(Manager *m) {
                 (void) home_wait_for_worker(h);
 
         m->bus = sd_bus_flush_close_unref(m->bus);
-        m->polkit_registry = bus_verify_polkit_async_registry_free(m->polkit_registry);
+        m->polkit_registry = hashmap_free(m->polkit_registry);
 
         m->device_monitor = sd_device_monitor_unref(m->device_monitor);
 
index 893eb4cc0f15be02265cdc8f037419fdea805d62..f0e643822a3bc6c2e080eea9bd8c48ad15171385 100644 (file)
@@ -91,7 +91,7 @@ static void context_destroy(Context *c) {
         assert(c);
 
         context_reset(c, UINT64_MAX);
-        bus_verify_polkit_async_registry_free(c->polkit_registry);
+        hashmap_free(c->polkit_registry);
 }
 
 static void context_read_etc_hostname(Context *c) {
index e9bbbb628dae84697b66a2bfc72d7287a3d07558..8bc8a328666765c40fd31630669ec2f133cce42d 100644 (file)
@@ -527,7 +527,7 @@ static Manager *manager_unref(Manager *m) {
 
         hashmap_free(m->transfers);
 
-        bus_verify_polkit_async_registry_free(m->polkit_registry);
+        hashmap_free(m->polkit_registry);
 
         m->bus = sd_bus_flush_close_unref(m->bus);
         sd_event_unref(m->event);
index e4e57a0f4a613250d52508fdac700ffe84cdc90d..0489df573b593077547bf1ca3df6324fc4d3e53a 100644 (file)
@@ -304,7 +304,7 @@ void context_clear(Context *c) {
         c->x11_cache = sd_bus_message_unref(c->x11_cache);
         c->vc_cache = sd_bus_message_unref(c->vc_cache);
 
-        c->polkit_registry = bus_verify_polkit_async_registry_free(c->polkit_registry);
+        c->polkit_registry = hashmap_free(c->polkit_registry);
 };
 
 X11Context *context_get_x11_context(Context *c) {
index 965e2a4aefe9cfcb251b3fbdf5204f74a878dd01..e96ddf5ae43682d7b6b16fe9e149854edfd25ca8 100644 (file)
@@ -154,7 +154,7 @@ static Manager* manager_free(Manager *m) {
         if (m->unlink_nologin)
                 (void) unlink_or_warn("/run/nologin");
 
-        bus_verify_polkit_async_registry_free(m->polkit_registry);
+        hashmap_free(m->polkit_registry);
 
         sd_bus_flush_close_unref(m->bus);
         sd_event_unref(m->event);
index 58a407d4513f0d5f215ea50009c718828806ac10..4e830a4bc23220c65301c91dffde8907e5256c91 100644 (file)
@@ -96,7 +96,7 @@ static Manager* manager_unref(Manager *m) {
         sd_event_source_unref(m->nscd_cache_flush_event);
 #endif
 
-        bus_verify_polkit_async_registry_free(m->polkit_registry);
+        hashmap_free(m->polkit_registry);
 
         manager_varlink_done(m);
 
index e81905ad98a99deedde2a34a08e8199290b6c943..8933fc49776d6053b37c412ab6f9d90d293d3daf 100644 (file)
@@ -638,8 +638,7 @@ Manager* manager_free(Manager *m) {
         sd_device_monitor_unref(m->device_monitor);
 
         manager_varlink_done(m);
-
-        bus_verify_polkit_async_registry_free(m->polkit_registry);
+        hashmap_free(m->polkit_registry);
         sd_bus_flush_close_unref(m->bus);
 
         free(m->dynamic_timezone);
index 6081254b3dc6c24e6257f8e2d85a076dc6109e5a..23c3ae64abca2d49d2a2be5a64f3eaff73413f9d 100644 (file)
@@ -642,7 +642,7 @@ Manager* manager_free(Manager *m) {
         sd_event_source_unref(m->mem_pressure_context_event_source);
         sd_event_unref(m->event);
 
-        bus_verify_polkit_async_registry_free(m->polkit_registry);
+        hashmap_free(m->polkit_registry);
         sd_bus_flush_close_unref(m->bus);
 
         hashmap_free(m->monitored_swap_cgroup_contexts);
index 136c5fa19184a084add11f7f77117d0b6525deec..7c2ddd90ef77e14b5f11340736e12461b51108c6 100644 (file)
@@ -65,7 +65,7 @@ static Manager* manager_unref(Manager *m) {
 
         sd_event_source_unref(m->image_cache_defer_event);
 
-        bus_verify_polkit_async_registry_free(m->polkit_registry);
+        hashmap_free(m->polkit_registry);
 
         sd_bus_flush_close_unref(m->bus);
         sd_event_unref(m->event);
index 0295662b5b5eae4f886adc940e4c7ce6acaa2f5a..a0251b4b97b37f511294074ad34f05dfd3aeaf9d 100644 (file)
@@ -731,7 +731,7 @@ Manager *manager_free(Manager *m) {
 
         ordered_set_free(m->dns_extra_stub_listeners);
 
-        bus_verify_polkit_async_registry_free(m->polkit_registry);
+        hashmap_free(m->polkit_registry);
 
         sd_bus_flush_close_unref(m->bus);
 
index 928b2c3d5b1174e1ffb7b2c01542d886223fe555..fe9363aad4466312f3c602aee2d9e0cacee818c7 100644 (file)
@@ -236,6 +236,14 @@ static AsyncPolkitQuery *async_polkit_query_free(AsyncPolkitQuery *q) {
 DEFINE_PRIVATE_TRIVIAL_REF_UNREF_FUNC(AsyncPolkitQuery, async_polkit_query, async_polkit_query_free);
 DEFINE_TRIVIAL_CLEANUP_FUNC(AsyncPolkitQuery*, async_polkit_query_unref);
 
+DEFINE_HASH_OPS_WITH_VALUE_DESTRUCTOR(
+                async_polkit_query_hash_ops,
+                void,
+                trivial_hash_func,
+                trivial_compare_func,
+                AsyncPolkitQuery,
+                async_polkit_query_unref);
+
 static int async_polkit_defer(sd_event_source *s, void *userdata) {
         AsyncPolkitQuery *q = ASSERT_PTR(userdata);
 
@@ -557,7 +565,7 @@ int bus_verify_polkit_async_full(
                 return -ENOMEM;
 
         if (!q->registry) {
-                r = hashmap_ensure_put(registry, /* hash_ops= */ NULL, call, q);
+                r = hashmap_ensure_put(registry, &async_polkit_query_hash_ops, call, q);
                 if (r < 0)
                         return r;
 
@@ -576,15 +584,6 @@ int bus_verify_polkit_async_full(
         return -EACCES;
 }
 
-Hashmap *bus_verify_polkit_async_registry_free(Hashmap *registry) {
-#if ENABLE_POLKIT
-        return hashmap_free_with_destructor(registry, async_polkit_query_unref);
-#else
-        assert(hashmap_isempty(registry));
-        return hashmap_free(registry);
-#endif
-}
-
 static int varlink_check_good_user(Varlink *link, uid_t good_user) {
         int r;
 
@@ -795,7 +794,7 @@ int varlink_verify_polkit_async(
                 return -ENOMEM;
 
         if (!q->registry) {
-                r = hashmap_ensure_put(registry, /* hash_ops= */ NULL, link, q);
+                r = hashmap_ensure_put(registry, &async_polkit_query_hash_ops, link, q);
                 if (r < 0)
                         return r;
 
index ac2a90c3c70e12b69b6a5008c9a4b3a94ebfa5c8..0fe3a4ca0ed91d0ab0bdc0c72c0a89d64ad6104e 100644 (file)
@@ -14,8 +14,6 @@ static inline int bus_verify_polkit_async(sd_bus_message *call, const char *acti
         return bus_verify_polkit_async_full(call, action, details, false, UID_INVALID, registry, ret_error);
 }
 
-Hashmap *bus_verify_polkit_async_registry_free(Hashmap *registry);
-
 int varlink_verify_polkit_async(Varlink *link, sd_bus *bus, const char *action, const char **details, uid_t good_user, Hashmap **registry);
 
 /* A JsonDispatch initializer that makes sure the allowInteractiveAuthentication boolean field we want for
index 53c2a6fb710cd4afb1f1c19f51e9087d58537166..b4a58fc6923961d00129bc6d6303ddd60f521e02 100644 (file)
@@ -119,7 +119,7 @@ static void context_clear(Context *c) {
         assert(c);
 
         free(c->zone);
-        bus_verify_polkit_async_registry_free(c->polkit_registry);
+        hashmap_free(c->polkit_registry);
         sd_bus_message_unref(c->cache);
 
         sd_bus_slot_unref(c->slot_job_removed);
index 1317bc0f76421176cff647c1e5b901290da58d13..6ed15aa402570c6365d60bb0f3aecce24b87c058 100644 (file)
@@ -962,7 +962,7 @@ Manager* manager_free(Manager *m) {
 
         sd_bus_flush_close_unref(m->bus);
 
-        bus_verify_polkit_async_registry_free(m->polkit_registry);
+        hashmap_free(m->polkit_registry);
 
         return mfree(m);
 }