summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristopher Schwarz <lakitu7@gmail.com>2009-10-08 16:42:16 +0000
committerTim Angus <tim@ngus.net>2013-01-03 00:16:43 +0000
commit3d5c05bab4290345daf3134bd3c01d83d555e329 (patch)
tree2346b2cfb0310ecc5092c642b703eebd4f8bca3c /src
parentfba8dc5e4e5bd5a7d77c5be7d82b8cabab76afaa (diff)
* (Bug 3274) Disallow names that are difficult to ban (thanks msk)
- Disallow numbers at the start of a name - All names must contain at least one letter - When matching name strings, ignore all non-alphanumeric characters
Diffstat (limited to 'src')
-rw-r--r--src/game/g_admin.c20
-rw-r--r--src/game/g_cmds.c12
2 files changed, 25 insertions, 7 deletions
diff --git a/src/game/g_admin.c b/src/game/g_admin.c
index e0b3be96..3bee21af 100644
--- a/src/game/g_admin.c
+++ b/src/game/g_admin.c
@@ -263,12 +263,32 @@ qboolean G_admin_name_check( gentity_t *ent, char *name, char *err, int len )
gclient_t *client;
char testName[ MAX_NAME_LENGTH ] = {""};
char name2[ MAX_NAME_LENGTH ] = {""};
+ int alphaCount = 0;
G_SanitiseString( name, name2, sizeof( name2 ) );
if( !strcmp( name2, "unnamedplayer" ) )
return qtrue;
+ G_DecolorString( name, testName, sizeof( testName ) );
+ if( isdigit( testName[ 0 ] ) )
+ {
+ Q_strncpyz( err, "Names cannot begin with numbers", len );
+ return qfalse;
+ }
+
+ for( i = 0; testName[ i ]; i++)
+ {
+ if( isalpha( testName[ i ] ) )
+ alphaCount++;
+ }
+
+ if( alphaCount == 0 )
+ {
+ Q_strncpyz( err, "Names must contain letters", len );
+ return qfalse;
+ }
+
for( i = 0; i < level.maxclients; i++ )
{
client = &level.clients[ i ];
diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c
index afa7b5eb..9d77e0c9 100644
--- a/src/game/g_cmds.c
+++ b/src/game/g_cmds.c
@@ -27,7 +27,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
==================
G_SanitiseString
-Remove case and control characters from a string
+Remove color codes and non-alphanumeric characters from a string
==================
*/
void G_SanitiseString( char *in, char *out, int len )
@@ -61,14 +61,12 @@ void G_SanitiseString( char *in, char *out, int len )
continue;
}
- if( *in < 32 )
+ if( isalnum( *in ) )
{
- in++;
- continue;
+ *out++ = tolower( *in );
+ len--;
}
-
- *out++ = tolower( *in++ );
- len--;
+ in++;
}
out -= spaces;
*out = 0;