diff -r 33aa0af8a29b src/check.c --- a/src/check.c Thu May 05 09:24:04 2016 +0200 +++ b/src/check.c Sat Oct 29 15:49:32 2016 +0200 @@ -22,6 +22,8 @@ #endif #define MIN(_a, _b) (((_a) < (_b)) ? (_a) : (_b)) +#define PW_MIN_USERNAME_LEN_TO_CHECK 3 + /* Helper functions */ /* @@ -373,7 +375,12 @@ char *user) { char *f, *b; - int dist; + int dist, userlen = strlen(user); + + /* No point to check for username in password in 1 or 2-char + * usernames; it will be contained one way or another anyway. */ + if (userlen < PW_MIN_USERNAME_LEN_TO_CHECK) + return 0; if (strstr(new, user) != NULL) return 1; @@ -385,7 +392,7 @@ /* now reverse the username, we can do that in place as it is strdup-ed */ f = user; - b = user + strlen(user) - 1; + b = user + userlen - 1; while (f < b) { char c;