]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shared/ask-password-api: when echoing multi-byte characters, print the whole sequence
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 26 Feb 2019 11:43:07 +0000 (12:43 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 26 Feb 2019 11:43:07 +0000 (12:43 +0100)
This is untested, but I don't see how the previous code could have worked
for multibyte characters (with echo on).

src/shared/ask-password-api.c

index bc5e1cf66929e4481538b4b0ff34e0d261a77bf0..a3d61d5b9ab89d75fe9d0e4db47e8d4eefd3b290 100644 (file)
@@ -442,8 +442,11 @@ int ask_password_tty(
                                 /* Check if we got a complete UTF-8 character now. If so, let's output one '*'. */
                                 n = utf8_encoded_valid_unichar(passphrase + codepoint, (size_t) -1);
                                 if (n >= 0) {
+                                        if (flags & ASK_PASSWORD_ECHO)
+                                                (void) loop_write(ttyfd, passphrase + codepoint, n, false);
+                                        else
+                                                (void) loop_write(ttyfd, "*", 1, false);
                                         codepoint = p;
-                                        (void) loop_write(ttyfd, (flags & ASK_PASSWORD_ECHO) ? &c : "*", 1, false);
                                 }
                         }