}
}
- r = quality_check_password(new_password, NULL, &error);
+ r = quality_check_password(new_password, /* old */ NULL, /* user */ NULL, &error);
if (r < 0) {
if (ERRNO_IS_NOT_SUPPORTED(r))
log_warning("Password quality check is not supported, proceeding anyway.");
break;
}
- r = quality_check_password(*a, "root", &error);
+ r = quality_check_password(*a, /* old */ NULL, "root", &error);
if (r < 0) {
if (ERRNO_IS_NOT_SUPPORTED(r))
log_warning("Password quality check is not supported, proceeding anyway.");
return 1;
}
-int quality_check_password(const char *password, const char *username, char **ret_error) {
+int quality_check_password(const char *password, const char *old, const char *username, char **ret_error) {
_cleanup_(sym_pwquality_free_settingsp) pwquality_settings_t *pwq = NULL;
char buf[PWQ_MAX_ERROR_MESSAGE_LEN];
void *auxerror;
if (r < 0)
return log_debug_errno(r, "Failed to allocate libpwquality context: %m");
- r = sym_pwquality_check(pwq, password, NULL, username, &auxerror);
+ r = sym_pwquality_check(pwq, password, old, username, &auxerror);
if (r < 0) {
if (ret_error) {
void pwq_maybe_disable_dictionary(pwquality_settings_t *pwq);
int pwq_allocate_context(pwquality_settings_t **ret);
int suggest_passwords(void);
-int quality_check_password(const char *password, const char *username, char **ret_error);
+int quality_check_password(const char *password, const char *old, const char *username, char **ret_error);
#else
return 0;
}
-static inline int quality_check_password(const char *password, const char *username, char **ret_error) {
+static inline int quality_check_password(const char *password, const char *old, const char *username, char **ret_error) {
if (ret_error)
*ret_error = NULL;
return 1; /* all good */