From ade70ee606b77a48cc4fff4cf335bd011ce92097 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sat, 24 Sep 2011 02:11:32 -0400 Subject: [PATCH] passphrase_read: Read from the controlling tty --- libfreerdp-utils/passphrase.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/libfreerdp-utils/passphrase.c b/libfreerdp-utils/passphrase.c index 90c92c032..0005dbf78 100644 --- a/libfreerdp-utils/passphrase.c +++ b/libfreerdp-utils/passphrase.c @@ -26,13 +26,36 @@ char* freerdp_passphrase_read(const char* prompt, char* buf, size_t bufsiz) { + char read_char; + char* buf_iter; char term_name[L_ctermid]; int term_id; + size_t read_bytes = 0; + + if (bufsiz == 0) + return NULL; ctermid(term_name); term_id = open(term_name, O_RDWR); + write(term_id, prompt, strlen(prompt) + sizeof '\0'); + + buf_iter = buf; + while (read(term_id, &read_char, sizeof read_char) == (sizeof read_char)) + { + read_bytes++; + if (read_char == '\n') + break; + if (read_bytes < bufsiz) + { + *buf_iter = read_char; + buf_iter++; + } + } + *buf_iter = '\0'; + close(term_id); - return NULL; + + return buf; }