mirror of
https://github.com/swaywm/sway.git
synced 2024-11-27 02:11:28 +00:00
Merge pull request #2146 from tobiasblass/prepare_server_before_dropping_privileges
Perform (partial) server initialization before dropping privileges.
This commit is contained in:
commit
e8fbda4d21
|
@ -47,6 +47,8 @@ struct sway_server {
|
|||
|
||||
struct sway_server server;
|
||||
|
||||
/* Prepares an unprivileged server_init by performing all privileged operations in advance */
|
||||
bool server_privileged_prepare(struct sway_server *server);
|
||||
bool server_init(struct sway_server *server);
|
||||
void server_fini(struct sway_server *server);
|
||||
void server_run(struct sway_server *server);
|
||||
|
|
|
@ -359,6 +359,11 @@ int main(int argc, char **argv) {
|
|||
|
||||
executable_sanity_check();
|
||||
bool suid = false;
|
||||
|
||||
if (!server_privileged_prepare(&server)) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef __linux__
|
||||
if (getuid() != geteuid() || getgid() != getegid()) {
|
||||
// Retain capabilities after setuid()
|
||||
|
|
|
@ -26,9 +26,8 @@
|
|||
#include "sway/tree/layout.h"
|
||||
|
||||
|
||||
bool server_init(struct sway_server *server) {
|
||||
wlr_log(L_DEBUG, "Initializing Wayland server");
|
||||
|
||||
bool server_privileged_prepare(struct sway_server *server) {
|
||||
wlr_log(L_DEBUG, "Preparing Wayland server initialization");
|
||||
server->wl_display = wl_display_create();
|
||||
server->wl_event_loop = wl_display_get_event_loop(server->wl_display);
|
||||
server->backend = wlr_backend_autocreate(server->wl_display, NULL);
|
||||
|
@ -37,6 +36,12 @@ bool server_init(struct sway_server *server) {
|
|||
wlr_log(L_ERROR, "Unable to create backend");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool server_init(struct sway_server *server) {
|
||||
wlr_log(L_DEBUG, "Initializing Wayland server");
|
||||
|
||||
struct wlr_renderer *renderer = wlr_backend_get_renderer(server->backend);
|
||||
assert(renderer);
|
||||
|
||||
|
|
Loading…
Reference in a new issue