1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-10-27 10:25:06 +03:00

ask-password-api: only emit a star on valid unicode codepoint

https://bugzilla.redhat.com/show_bug.cgi?id=1301984
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2016-01-26 17:05:38 -05:00
parent 8a1baa3ad1
commit f3149d57b6

View File

@ -59,6 +59,7 @@
#include "terminal-util.h"
#include "time-util.h"
#include "umask-util.h"
#include "utf8.h"
#include "util.h"
#define KEYRING_TIMEOUT_USEC ((5 * USEC_PER_MINUTE) / 2)
@ -213,8 +214,8 @@ int ask_password_tty(
char **ret) {
struct termios old_termios, new_termios;
char passphrase[LINE_MAX], *x;
size_t p = 0;
char passphrase[LINE_MAX + 1] = {}, *x;
size_t p = 0, codepoint = 0;
int r;
_cleanup_close_ int ttyfd = -1, notify = -1;
struct pollfd pollfd[2];
@ -378,8 +379,13 @@ int ask_password_tty(
passphrase[p++] = c;
if (!(flags & ASK_PASSWORD_SILENT) && ttyfd >= 0)
loop_write(ttyfd, (flags & ASK_PASSWORD_ECHO) ? &c : "*", 1, false);
if (!(flags & ASK_PASSWORD_SILENT) && ttyfd >= 0) {
n = utf8_encoded_valid_unichar(passphrase + codepoint);
if (n >= 0) {
codepoint = p;
loop_write(ttyfd, (flags & ASK_PASSWORD_ECHO) ? &c : "*", 1, false);
}
}
dirty = true;
}