force usernames to be alpha numeric chars and dashes
authorMichael Rash <mbr@cipherdyne.org>
Sat, 13 Oct 2012 03:51:28 +0000 (23:51 -0400)
committerMichael Rash <mbr@cipherdyne.org>
Sat, 13 Oct 2012 03:51:28 +0000 (23:51 -0400)
lib/fko_user.c

index 9c2a5ed..0c909dd 100644 (file)
@@ -41,6 +41,7 @@ int
 fko_set_username(fko_ctx_t ctx, const char *spoof_user)
 {
     char   *username = NULL;
+    int     i;
 
     /* Must be initialized
     */
@@ -87,6 +88,15 @@ fko_set_username(fko_ctx_t ctx, const char *spoof_user)
     if(strnlen(username, MAX_SPA_USERNAME_SIZE) == MAX_SPA_USERNAME_SIZE)
         *(username + MAX_SPA_USERNAME_SIZE - 1) = '\0';
 
+    /* Make sure it is just alpha-numeric chars and dashes
+    */
+    if(isalnum(username[0]) == 0)
+        return(FKO_ERROR_INVALID_DATA);
+
+    for (i=1; i < strnlen(username, MAX_SPA_USERNAME_SIZE); i++)
+        if((isalnum(username[i]) == 0) && username[i] != '-')
+            return(FKO_ERROR_INVALID_DATA);
+
     /* Just in case this is a subsquent call to this function.  We
      * do not want to be leaking memory.
     */