YoushouldhavereceivedacopyoftheGNUGeneralPublicLicense alongwiththisprogram;ifnot,writetotheFreeSoftware
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
if (strncmp(password->str, username->str, length) == 0)
{ // warning used to do not change error code
my_printf_error(ER_NOT_VALID_PASSWORD, "simple_password_check: The password equal to the user name",
ME_WARNING); return1;
}
/* everything non-ascii is the "other" character and is good for the password */ for(; ptr < end; ptr++)
{ if (isdigit(*ptr))
digits++; elseif (isupper(*ptr))
uppers++; elseif (islower(*ptr))
lowers++; else
others++;
}
// warnings used to do not change error code if (length < min_length)
my_printf_error(ER_NOT_VALID_PASSWORD, "simple_password_check: Too short password (< %u)",
ME_WARNING, min_length); if (uppers < min_letters)
my_printf_error(ER_NOT_VALID_PASSWORD, "simple_password_check: Not enough upper case " "letters (< %u)",ME_WARNING, min_letters); if (lowers < min_letters)
my_printf_error(ER_NOT_VALID_PASSWORD, "simple_password_check: Not enough lower case " "letters (< %u)",ME_WARNING, min_letters); if (digits < min_digits)
my_printf_error(ER_NOT_VALID_PASSWORD, "simple_password_check: Not enough digits (< %u)",
ME_WARNING, min_digits); if (others < min_others)
my_printf_error(ER_NOT_VALID_PASSWORD, "simple_password_check: Not enough special " "characters (< %u)",ME_WARNING, min_others); /* remember TRUE means the password failed the validation */ return length < min_length ||
uppers < min_letters ||
lowers < min_letters ||
digits < min_digits ||
others < min_others;
}
staticvoid fix_min_length(MYSQL_THD thd __attribute__((unused)), struct st_mysql_sys_var *var
__attribute__((unused)), void *var_ptr, constvoid *save)
{ unsignedint new_min_length;
*((unsignedint *)var_ptr)= *((unsignedint *)save);
new_min_length= min_digits + 2 * min_letters + min_others; if (min_length < new_min_length)
{
my_printf_error(ER_TRUNCATED_WRONG_VALUE, "Adjusted the value of simple_password_check_minimal_length " "from %u to %u", ME_WARNING, min_length, new_min_length);
min_length= new_min_length;
}
}
static MYSQL_SYSVAR_UINT(digits, min_digits, PLUGIN_VAR_RQCMDARG, "Minimal required number of digits", NULL, fix_min_length, 1, 0, 1000, 1);
static MYSQL_SYSVAR_UINT(letters_same_case, min_letters, PLUGIN_VAR_RQCMDARG, "Minimal required number of letters of the same letter case." "This limit is applied separately to upper-case and lower-case letters",
NULL, fix_min_length, 1, 0, 1000, 1);
static MYSQL_SYSVAR_UINT(other_characters, min_others, PLUGIN_VAR_RQCMDARG, "Minimal required number of other (not letters or digits) characters",
NULL, fix_min_length, 1, 0, 1000, 1);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.