int bus_image_method_mark_read_only( sd_bus_message *message, void *userdata, sd_bus_error *error) { Image *image = userdata; Manager *m = image->userdata; int r, read_only; assert(message); r = sd_bus_message_read(message, "b", &read_only); if (r < 0) return r; r = bus_verify_polkit_async( message, CAP_SYS_ADMIN, "org.freedesktop.machine1.manage-images", false, UID_INVALID, &m->polkit_registry, error); if (r < 0) return r; if (r == 0) return 1; /* Will call us back */ r = image_read_only(image, read_only); if (r < 0) return r; return sd_bus_reply_method_return(message, NULL); }
int bus_image_common_mark_read_only( Manager *m, sd_bus_message *message, const char *name_or_path, Image *image, sd_bus_error *error) { int r, read_only; assert(message); assert(name_or_path || image); if (!m) { assert(image); m = image->userdata; } r = sd_bus_message_read(message, "b", &read_only); if (r < 0) return r; r = bus_image_acquire(m, message, name_or_path, image, BUS_IMAGE_AUTHENTICATE_ALL, "org.freedesktop.portable1.manage-images", &image, error); if (r < 0) return r; if (r == 0) return 1; /* Will call us back */ r = image_read_only(image, read_only); if (r < 0) return r; return sd_bus_reply_method_return(message, NULL); }