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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user