summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEyal Sawady <ecs@d2evs.net>2021-05-16 15:53:47 -0400
committerDrew DeVault <sir@cmpwn.com>2021-05-16 15:54:16 -0400
commitb9a92193e96bbe621ebc8430d8308d45a5b86cef (patch)
tree367248856582f3bbb603737766792c3eb6b55c3b
parent53e4ce4abd53ced1a9b527cbcddebdc3f58ab0a9 (diff)
downloadgmnisrv-b9a92193e96bbe621ebc8430d8308d45a5b86cef.tar.gz
gmnisrv-b9a92193e96bbe621ebc8430d8308d45a5b86cef.tar.xz
gmnisrv-b9a92193e96bbe621ebc8430d8308d45a5b86cef.zip
disconnect_client: fix index calculation
This was sometimes causing a gmnisrv_client to be overwritten by the deinitialized client, which occasionally lead to a segfault when we later tried to use it.
-rw-r--r--src/server.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/server.c b/src/server.c
index dac772b..e199f6f 100644
--- a/src/server.c
+++ b/src/server.c
@@ -200,7 +200,7 @@ disconnect_client(struct gmnisrv_server *server, struct gmnisrv_client *client)
free(client->path);
client->path = NULL;
- size_t index = (client - server->clients) / sizeof(struct gmnisrv_client);
+ size_t index = client - server->clients;
memmove(&server->clients[index],
&server->clients[index + 1],
(server->clientsz - (index + 1)) * sizeof(struct gmnisrv_client));