diff --git a/src/journal/journald-varlink.c b/src/journal/journald-varlink.c index fb0d463c4f..cbadbca777 100644 --- a/src/journal/journald-varlink.c +++ b/src/journal/journald-varlink.c @@ -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;