summaryrefslogtreecommitdiff
path: root/noncore/net
authorskyhusker <skyhusker>2005-05-31 21:08:33 (UTC)
committer skyhusker <skyhusker>2005-05-31 21:08:33 (UTC)
commitb30f28de8d5fa29001bc73a0a0e56ef653f1269f (patch) (unidiff)
treebd6530f1ba36fb7bf96c1d8c2962446cab416da8 /noncore/net
parent89417179ed4d38875dc3edce0f4e184edf13f1f2 (diff)
downloadopie-b30f28de8d5fa29001bc73a0a0e56ef653f1269f.zip
opie-b30f28de8d5fa29001bc73a0a0e56ef653f1269f.tar.gz
opie-b30f28de8d5fa29001bc73a0a0e56ef653f1269f.tar.bz2
Fix channel name validation. Thanks to hrw for reporting.
Diffstat (limited to 'noncore/net') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/opieirc/ircservertab.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/noncore/net/opieirc/ircservertab.cpp b/noncore/net/opieirc/ircservertab.cpp
index d3c0448..5eb1758 100644
--- a/noncore/net/opieirc/ircservertab.cpp
+++ b/noncore/net/opieirc/ircservertab.cpp
@@ -96,51 +96,52 @@ QString *IRCServerTab::mynick() {
96 return (*m_server->nick()); 96 return (*m_server->nick());
97} */ 97} */
98 98
99IRCServer *IRCServerTab::server() { 99IRCServer *IRCServerTab::server() {
100 return &m_server; 100 return &m_server;
101} 101}
102 102
103void IRCServerTab::settingsChanged() { 103void IRCServerTab::settingsChanged() {
104 m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>"); 104 m_textview->setText("<qt bgcolor=\"" + m_backgroundColor + "\"/>");
105 m_lines = 0; 105 m_lines = 0;
106} 106}
107 107
108void IRCServerTab::executeCommand(IRCTab *tab, QString line) { 108void IRCServerTab::executeCommand(IRCTab *tab, QString line) {
109 QTextIStream stream(&line); 109 QTextIStream stream(&line);
110 QString command; 110 QString command;
111 stream >> command; 111 stream >> command;
112 command = command.upper().right(command.length()-1); 112 command = command.upper().right(command.length()-1);
113 113
114 //JOIN 114 //JOIN
115 if (command == "JOIN" || command == "J") { 115 if (command == "JOIN" || command == "J") {
116 QString channel; 116 QString channel;
117 stream >> channel; 117 stream >> channel;
118 /* According to RFC 1459 */ 118 /* According to RFC 1459 */
119 if (channel.length() > 0 && channel.length() < 200 && 119 if (channel.length() > 0 && channel.length() < 200 &&
120 channel.find(",") == -1 && channel.find("") == -1) { 120 channel.find(",") == -1 && channel.find('\007') == -1) {
121 121
122 if (!channel.startsWith("#") && !channel.startsWith("&")) { 122 if (!channel.startsWith("#") && !channel.startsWith("&")
123 && !channel.startsWith("+") && !channel.startsWith("!")) {
123 channel = channel.prepend("#"); 124 channel = channel.prepend("#");
124 } 125 }
125 m_session->join(channel); 126 m_session->join(channel);
126 } else { 127 } else {
127 tab->appendText("<font color=\"" + m_errorColor + "\">Unknown channel format!</font><br>"); 128 tab->appendText("<font color=\"" + m_errorColor + "\">Unknown channel format!</font><br>");
128 } 129 }
129 } 130 }
130 131
131 //KICK 132 //KICK
132 else if (command == "KICK"){ 133 else if (command == "KICK"){
133 QString nickname; 134 QString nickname;
134 stream >> nickname; 135 stream >> nickname;
135 if (nickname.length() > 0) { 136 if (nickname.length() > 0) {
136 if (line.length() > 7 + nickname.length()) { 137 if (line.length() > 7 + nickname.length()) {
137 QString text = line.right(line.length()-nickname.length()-7); 138 QString text = line.right(line.length()-nickname.length()-7);
138 IRCPerson person; 139 IRCPerson person;
139 person.setNick(nickname); 140 person.setNick(nickname);
140 m_session->kick(((IRCChannelTab *)tab)->channel(), &person, text); 141 m_session->kick(((IRCChannelTab *)tab)->channel(), &person, text);
141 } else { 142 } else {
142 IRCPerson person; 143 IRCPerson person;
143 person.setNick(nickname); 144 person.setNick(nickname);
144 m_session->kick(((IRCChannelTab *)tab)->channel(), &person); 145 m_session->kick(((IRCChannelTab *)tab)->channel(), &person);
145 } 146 }
146 } 147 }