summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server_network.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/server_network.c b/server_network.c
index b7694b1..055e86d 100644
--- a/server_network.c
+++ b/server_network.c
@@ -584,6 +584,12 @@ int squit_handler(struct string sender, uint64_t argc, struct string *argv) {
return 1;
}
+ struct server_info *server = remove_table_index(&server_list, argv[0]);
+ if (!server) {
+ WRITES(2, STRING("Invalid SQUIT received! (Unknown server)\n"));
+ return 1;
+ }
+
for (uint64_t i = 0; i < user_list.len;) {
struct user_info *info = user_list.array[i].ptr;
if (argv[0].len == info->server.len && memcmp(argv[0].data, info->server.data, argv[0].len) == 0) {
@@ -593,7 +599,6 @@ int squit_handler(struct string sender, uint64_t argc, struct string *argv) {
}
}
- struct server_info *server = remove_table_index(&server_list, argv[0]);
free(server->name.data);
free(server->address.data);
if (server->via.data != 0)