aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-04-28 22:42:21 +0200
committerLudovic Courtès <ludo@gnu.org>2019-04-28 22:57:07 +0200
commitada4aeb0681445b89459a202b5fa1a46f0a7950e (patch)
treeff80a38d31c4093ba6ad30867c5c4e85b6bc32f6
parent0e8e963d73e61c7666f9ec4efa98c1a277c72af9 (diff)
downloadguix-ada4aeb0681445b89459a202b5fa1a46f0a7950e.tar
guix-ada4aeb0681445b89459a202b5fa1a46f0a7950e.tar.gz
installer: Fix handling of user password mismatches.
Previously, if we had a password mismatch, the 'password' field would end up containing a <user> record instead of the actual password. * gnu/installer/newt/user.scm (confirm-password): Make TRY-AGAIN optional and adjust docstring. (run-user-add-page): Move 'confirm-password' call one level higher.
-rw-r--r--gnu/installer/newt/user.scm28
1 files changed, 13 insertions, 15 deletions
diff --git a/gnu/installer/newt/user.scm b/gnu/installer/newt/user.scm
index 7c646c1ae8..deab056e0c 100644
--- a/gnu/installer/newt/user.scm
+++ b/gnu/installer/newt/user.scm
@@ -115,25 +115,23 @@ REAL-NAME, and HOME-DIRECTORY as the initial values in the form."
(begin
(error-page)
(run-user-add-page))
- (user
- (name name)
- (real-name real-name)
- (home-directory home-directory)
- (password
- (confirm-password password
- (lambda ()
- (run-user-add-page
- #:name name
- #:real-name real-name
- #:home-directory
- home-directory)))))))))))
+ (let ((password (confirm-password password)))
+ (if password
+ (user
+ (name name)
+ (real-name real-name)
+ (home-directory home-directory)
+ (password password))
+ (run-user-add-page #:name name
+ #:real-name real-name
+ #:home-directory
+ home-directory)))))))))
(lambda ()
(destroy-form-and-pop form)))))))
-(define (confirm-password password try-again)
+(define* (confirm-password password #:optional (try-again (const #f)))
"Ask the user to confirm PASSWORD, a possibly empty string. Call TRY-AGAIN,
-a thunk, if the confirmation doesn't match PASSWORD. Return the confirmed
-password."
+a thunk, if the confirmation doesn't match PASSWORD, and return its result."
(define confirmation
(run-input-page (G_ "Please confirm the password.")
(G_ "Password confirmation required")