From 0b913b75fd6eee2b7e8a6920de2fc1591ecb8396 Mon Sep 17 00:00:00 2001 From: Test_User Date: Wed, 9 Aug 2023 01:04:52 -0400 Subject: Don't implode if protocol gets violated like this --- server_network.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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) -- cgit v1.2.3