silcd: better anonymised user names
authorPekka Riikonen <priikone@silcnet.org>
Fri, 9 May 2014 15:02:55 +0000 (18:02 +0300)
committerPekka Riikonen <priikone@silcnet.org>
Fri, 9 May 2014 15:02:55 +0000 (18:02 +0300)
Use fully longer random user names when anonymous mode is on.  Replace
also the real name with anonymised username.

apps/silcd/packet_receive.c

index 56435eb6b69420dadddc9d62d9aa711e57be3b95..d6312d015e0454c8e353868f0a5875469260a9ac 100644 (file)
@@ -2115,7 +2115,8 @@ SilcClientEntry silc_server_new_client(SilcServer server,
   char *username = NULL, *realname = NULL;
   SilcUInt16 username_len, nickname_len;
   SilcUInt32 id_len, tmp_len;
-  int ret;
+  int ret, i;
+  unsigned char tmp[8];
   char *host, *nickname = NULL, *nicknamec;
   const char *hostname, *ip;
 
@@ -2300,19 +2301,18 @@ SilcClientEntry silc_server_new_client(SilcServer server,
   if (client->mode & SILC_UMODE_ANONYMOUS) {
     char *scramble;
 
-    if (strlen(username) >= 2) {
-      username[0] = silc_rng_get_byte_fast(server->rng);
-      username[1] = silc_rng_get_byte_fast(server->rng);
-    }
+    for (i = 0; i < sizeof(tmp); i++)
+      tmp[i] = silc_rng_get_byte_fast(server->rng);
 
-    scramble = silc_hash_babbleprint(server->sha1hash, username,
-                                    strlen(username));
+    scramble = silc_hash_babbleprint(server->sha1hash, tmp, sizeof(tmp));
     scramble[5] = '@';
     scramble[11] = '.';
     memcpy(&scramble[16], ".silc", 5);
     scramble[21] = '\0';
     silc_free(username);
     username = scramble;
+    silc_free(realname);
+    realname = NULL;
   }
 
   /* Update client entry */