From 8f9ed7220159e97135e794b942d225e925d5ce22 Mon Sep 17 00:00:00 2001 From: project-repo Date: Mon, 25 May 2020 17:45:19 +0200 Subject: [PATCH] Improve error handling --- cagebreak.c | 6 +++++- ipc_server.c | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/cagebreak.c b/cagebreak.c index ccbbc7d..c99bd95 100644 --- a/cagebreak.c +++ b/cagebreak.c @@ -515,7 +515,11 @@ main(int argc, char *argv[]) { wlr_xwayland_set_seat(xwayland, server.seat->seat); #endif - ipc_init(&server); + if(ipc_init(&server) != 0) { + wlr_log(WLR_ERROR, "Failed to initialize IPC"); + ret = 1; + goto end; + } { // config_file should only be visible as long as it is valid char *config_file = get_config_file(); diff --git a/ipc_server.c b/ipc_server.c index 8a7b083..35eea2d 100644 --- a/ipc_server.c +++ b/ipc_server.c @@ -73,6 +73,7 @@ int ipc_init(struct cg_server *server) { if (max_path_size <= snprintf(ipc->sockaddr->sun_path, max_path_size, "%s/cagebreak-ipc.%i.%i.sock", sockdir, getuid(), getpid())) { wlr_log(WLR_ERROR,"Unable to write socket path to ipc->sockaddr->sun_path. Path too long"); + free(ipc->sockaddr); return -1; } @@ -80,11 +81,14 @@ int ipc_init(struct cg_server *server) { if (bind(ipc->socket, (struct sockaddr *)ipc->sockaddr, sizeof(*ipc->sockaddr)) == -1) { wlr_log(WLR_ERROR, "Unable to bind IPC socket"); + free(ipc->sockaddr); return -1; } if (listen(ipc->socket, 3) == -1) { wlr_log(WLR_ERROR, "Unable to listen on IPC socket"); + free(ipc->sockaddr); + return -1; } setenv("CAGEBREAK_SOCKET", ipc->sockaddr->sun_path, 1);