summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Lebreux <me@tomlebreux.com>2020-11-07 07:56:48 -0500
committerDrew DeVault <sir@cmpwn.com>2020-11-08 09:37:59 -0500
commit7aedbed7740c3ee5d60705a2ad74cdc760e60f2e (patch)
treef9d868c86fe8e5fc38db56528956bb451871a362
parentd20caf389bd6cd8e6d8daaeb6d51a022fc643292 (diff)
downloadgmnisrv-7aedbed7740c3ee5d60705a2ad74cdc760e60f2e.tar.gz
gmnisrv-7aedbed7740c3ee5d60705a2ad74cdc760e60f2e.tar.xz
gmnisrv-7aedbed7740c3ee5d60705a2ad74cdc760e60f2e.zip
Don't memmove one past clients
-rw-r--r--src/server.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/server.c b/src/server.c
index 9ce304f..4a38eaa 100644
--- a/src/server.c
+++ b/src/server.c
@@ -197,7 +197,9 @@ disconnect_client(struct gmnisrv_server *server, struct gmnisrv_client *client)
free(client->path);
size_t index = (client - server->clients) / sizeof(struct gmnisrv_client);
- memmove(client, &client[1], &server->clients[server->clientsz] - client);
+ memmove(&server->clients[index],
+ &server->clients[index + 1],
+ (server->clientsz - (index + 1)) * sizeof(struct gmnisrv_client));
memmove(&server->fds[server->nlisten + index],
&server->fds[server->nlisten + index + 1],
(server->fdsz - (server->nlisten + index + 1)) * sizeof(struct pollfd));