and BAN.
+Thu Apr 24 19:50:25 EEST 2003 Pekka Riikonen <priikone@silcnet.org>
+
+ * Deny '@' and '!' from nicknames since they are reserved
+ by the SILC_COMMAND_INVITE and SILC_COMMAND_BAN commands.
+ Updated protocol specs and the code.
+
+ Affected files are silcd/server_util.[ch].
+
Wed Apr 9 18:51:59 EEST 2003 Pekka Riikonen <priikone@silcnet.org>
* Fixed stack overflow in Irssi SILC client. Affected
if (tmp_len > 256)
channel_name[255] = '\0';
- if (silc_server_name_bad_chars(channel_name, tmp_len) == TRUE) {
+ if (silc_server_name_bad_chchars(channel_name, tmp_len) == TRUE) {
silc_server_command_send_status_reply(cmd, SILC_COMMAND_JOIN,
SILC_STATUS_ERR_BAD_CHANNEL, 0);
goto out;
{
int i;
+ for (i = 0; i < name_len; i++) {
+ if (!isascii(name[i]))
+ return TRUE;
+ if (name[i] <= 32) return TRUE;
+ if (name[i] == ' ') return TRUE;
+ if (name[i] == '*') return TRUE;
+ if (name[i] == '?') return TRUE;
+ if (name[i] == ',') return TRUE;
+ if (name[i] == '@') return TRUE;
+ if (name[i] == '!') return TRUE;
+ }
+
+ return FALSE;
+}
+
+/* Same as silc_server_name_bad_chars but check for channel names. */
+
+bool silc_server_name_bad_chchars(const char *name, SilcUInt32 name_len)
+{
+ int i;
+
for (i = 0; i < name_len; i++) {
if (!isascii(name[i]))
return TRUE;
/* Checks string for bad characters and returns TRUE if they are found. */
bool silc_server_name_bad_chars(const char *name, SilcUInt32 name_len);
+bool silc_server_name_bad_chchars(const char *name, SilcUInt32 name_len);
/* Modifies the `nick' if it includes bad characters and returns new
allocated nickname that does not include bad characters. */