]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
pwquality: add old password argument to quality_check_password
authorDmitry V. Levin <ldv@strace.io>
Thu, 6 Jul 2023 08:00:00 +0000 (08:00 +0000)
committerDmitry V. Levin <ldv@strace.io>
Thu, 6 Jul 2023 10:59:41 +0000 (10:59 +0000)
This would allow to use quality_check_password() in
user_record_quality_check_password() which still uses
sym_pwquality_check() directly.

src/cryptenroll/cryptenroll-password.c
src/firstboot/firstboot.c
src/shared/pwquality-util.c
src/shared/pwquality-util.h

index de72278394ac781e0067f3122246ba0f297c1165..44e6f0b227b6f1715836d843d3fb3f3a61d668a5 100644 (file)
@@ -156,7 +156,7 @@ int enroll_password(
                 }
         }
 
-        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.");
index 019b7d70afadb1d0532277694617a1ef0f4ad3f4..501f074c94f0776d1ee68e9cc0664280a0b7ad63 100644 (file)
@@ -790,7 +790,7 @@ static int prompt_root_password(int rfd) {
                         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.");
index 34d3e353305542c4d776d98b25552c75bf8525dc..450208319d8142650b5a5f7f1edbbd4939c9fca5 100644 (file)
@@ -132,7 +132,7 @@ int suggest_passwords(void) {
         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;
@@ -144,7 +144,7 @@ int quality_check_password(const char *password, const char *username, char **re
         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) {
index 877f439d11723f3fd36af2c6c6099d0a3941030c..4e18f39f784f66272696f7986f17465d4263a0c2 100644 (file)
@@ -24,7 +24,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(pwquality_settings_t*, sym_pwquality_free_setti
 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
 
@@ -32,7 +32,7 @@ static inline int suggest_passwords(void) {
         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 */