summaryrefslogtreecommitdiff
path: root/Applications
diff options
context:
space:
mode:
Diffstat (limited to 'Applications')
-rw-r--r--Applications/IRCClient/IRCClient.cpp24
-rw-r--r--Applications/IRCClient/IRCClient.h3
2 files changed, 21 insertions, 6 deletions
diff --git a/Applications/IRCClient/IRCClient.cpp b/Applications/IRCClient/IRCClient.cpp
index bf8d8c1119..2677fc9143 100644
--- a/Applications/IRCClient/IRCClient.cpp
+++ b/Applications/IRCClient/IRCClient.cpp
@@ -388,7 +388,7 @@ void IRCClient::handle_user_input_in_server(const String& input)
return handle_user_command(input);
}
-bool IRCClient::is_nick_prefix(char ch) const
+bool IRCClient::is_nick_prefix(char ch)
{
switch (ch) {
case '@':
@@ -401,6 +401,18 @@ bool IRCClient::is_nick_prefix(char ch) const
return false;
}
+bool IRCClient::is_channel_prefix(char ch)
+{
+ switch (ch) {
+ case '&':
+ case '#':
+ case '+':
+ case '!':
+ return true;
+ }
+ return false;
+}
+
static bool has_ctcp_payload(const StringView& string)
{
return string.length() >= 2 && string[0] == 0x01 && string[string.length() - 1] == 0x01;
@@ -742,9 +754,10 @@ void IRCClient::handle_user_command(const String& input)
if (command == "/TOPIC") {
if (parts.size() < 2)
return;
+ if (parts[1].is_empty())
+ return;
- // FIXME: channel name validation should be abstracted away into a validation function
- if (parts[1].starts_with("&") || parts[1].starts_with("#") || parts[1].starts_with("+") || parts[1].starts_with("!")) {
+ if (is_channel_prefix(parts[1][0])) {
if (parts.size() < 3)
return;
auto channel = parts[1];
@@ -763,9 +776,10 @@ void IRCClient::handle_user_command(const String& input)
if (command == "/KICK") {
if (parts.size() < 2)
return;
+ if (parts[1].is_empty())
+ return;
- // FIXME: channel name validation should be abstracted away into a validation function
- if (parts[1].starts_with("&") || parts[1].starts_with("#") || parts[1].starts_with("+") || parts[1].starts_with("!")) {
+ if (is_channel_prefix(parts[1][0])) {
if (parts.size() < 3)
return;
auto channel = parts[1];
diff --git a/Applications/IRCClient/IRCClient.h b/Applications/IRCClient/IRCClient.h
index b9eadecbea..b462f69a91 100644
--- a/Applications/IRCClient/IRCClient.h
+++ b/Applications/IRCClient/IRCClient.h
@@ -60,7 +60,8 @@ public:
void part_channel(const String&);
void change_nick(const String&);
- bool is_nick_prefix(char) const;
+ static bool is_nick_prefix(char);
+ static bool is_channel_prefix(char);
IRCWindow* current_window() { return aid_get_active_window(); }
const IRCWindow* current_window() const { return aid_get_active_window(); }