journal: do not accept multiple requests to sync journal per varlink connection

Otherwise, previously allocated SyncReq object will be leaked,
and the latest SyncReq object will be freed multiple times.
This commit is contained in:
Yu Watanabe
2026-08-19 03:29:26 +09:00
parent 0566d7aa35
commit c2806a8c1d
+7 -1
View File
@@ -40,11 +40,17 @@ static int vl_method_synchronize(sd_varlink *link, sd_json_variant *parameters,
{}
};
Manager *m = ASSERT_PTR(userdata);
int r;
assert(link);
/* Here, userdata may not be a pointer to the Manager object. Obtain the manager from the server. */
Manager *m = ASSERT_PTR(sd_varlink_server_get_userdata(sd_varlink_get_server(link)));
/* The varlink connection already requested to sync journals. Refusing. */
if (sd_varlink_get_userdata(link) != m)
return -EBUSY;
r = sd_varlink_dispatch(link, parameters, dispatch_table, &offline);
if (r != 0)
return r;