summaryrefslogtreecommitdiff
path: root/src/shared/ask-password-api.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-02-26 12:43:07 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-02-26 12:43:07 +0100
commitd26eef9252677bfe06ed76eedc11db3001283814 (patch)
tree1e572d32033af13b1d9fc416af397bb2c50cf4dd /src/shared/ask-password-api.c
parent92e068b465299d5d88fe480bc5cf2bf4bd750516 (diff)
downloadsystemd-d26eef9252677bfe06ed76eedc11db3001283814.tar.gz
shared/ask-password-api: when echoing multi-byte characters, print the whole sequence
This is untested, but I don't see how the previous code could have worked for multibyte characters (with echo on).
Diffstat (limited to 'src/shared/ask-password-api.c')
-rw-r--r--src/shared/ask-password-api.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c
index bc5e1cf669..a3d61d5b9a 100644
--- a/src/shared/ask-password-api.c
+++ b/src/shared/ask-password-api.c
@@ -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);
}
}