From: Zbigniew Jędrzejewski-Szmek Date: Tue, 26 Feb 2019 11:43:07 +0000 (+0100) Subject: shared/ask-password-api: when echoing multi-byte characters, print the whole sequence X-Git-Tag: v242-rc1~240^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d26eef9252677bfe06ed76eedc11db3001283814;p=thirdparty%2Fsystemd.git 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). --- diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c index bc5e1cf6692..a3d61d5b9ab 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); } }