diff options
author | Test_User <hax@andrewyu.org> | 2023-08-09 01:04:52 -0400 |
---|---|---|
committer | Test_User <hax@andrewyu.org> | 2023-08-09 01:04:52 -0400 |
commit | 0b913b75fd6eee2b7e8a6920de2fc1591ecb8396 (patch) | |
tree | 0c04bcb0f7fbf2350eaf2ced03fc6d02f197eab9 | |
parent | 530d8cd8a6c2d28c1f358dc369613eb9e0e10a71 (diff) | |
download | coupserv-0b913b75fd6eee2b7e8a6920de2fc1591ecb8396.tar.gz coupserv-0b913b75fd6eee2b7e8a6920de2fc1591ecb8396.zip |
Don't implode if protocol gets violated like this
Diffstat (limited to '')
-rw-r--r-- | server_network.c | 7 |
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) |