aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenny Levinsen <kl@kl.wtf>2020-08-04 01:43:24 +0200
committerKenny Levinsen <kl@kl.wtf>2020-08-04 01:43:24 +0200
commitdb36f0dfe863e2fe20bcb4e8ef4ba06579ab2e53 (patch)
tree63dd4e3d03cf25a8478e2d1a7f6823ce56141e5f
parenta8204ebceac760519d8653a10fedad6f21e8c11c (diff)
client: Sanitize shutdown/kill mechanism
-rw-r--r--seatd/client.c3
-rw-r--r--seatd/seat.c6
2 files changed, 3 insertions, 6 deletions
diff --git a/seatd/client.c b/seatd/client.c
index 60e6d55..1adc2d9 100644
--- a/seatd/client.c
+++ b/seatd/client.c
@@ -76,8 +76,6 @@ void client_kill(struct client *client) {
assert(client);
if (client->connection.fd != -1) {
shutdown(client->connection.fd, SHUT_RDWR);
- close(client->connection.fd);
- client->connection.fd = -1;
};
if (client->seat != NULL) {
seat_remove_client(client);
@@ -96,7 +94,6 @@ void client_destroy(struct client *client) {
client->event_source = NULL;
}
if (client->connection.fd != -1) {
- shutdown(client->connection.fd, SHUT_RDWR);
close(client->connection.fd);
client->connection.fd = -1;
}
diff --git a/seatd/seat.c b/seatd/seat.c
index 8650e2b..37f2b00 100644
--- a/seatd/seat.c
+++ b/seatd/seat.c
@@ -40,7 +40,7 @@ void seat_destroy(struct seat *seat) {
while (!linked_list_empty(&seat->clients)) {
struct client *client = (struct client *)seat->clients.next;
// This will cause the client to remove itself from the seat
- assert(client->seat);
+ assert(client->seat == seat);
client_kill(client);
}
assert(seat->curttyfd == -1);
@@ -367,7 +367,7 @@ int seat_open_client(struct seat *seat, struct client *client) {
seat->active_client = client;
if (client_send_enable_seat(client) == -1) {
- seat_remove_client(client);
+ log_error("could not send enable signal");
return -1;
}
@@ -428,7 +428,7 @@ static int seat_disable_client(struct client *client) {
client->pending_disable = true;
if (client_send_disable_seat(seat->active_client) == -1) {
- seat_remove_client(client);
+ log_error("could not send disable event");
return -1;
}