From 859a82a85cc0a1ea6dff496b3542beda0b06f933 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 3 Feb 2015 00:30:45 +0100 Subject: getpass_r: read from stdin, not stdout! The file number used was wrong. This bug was introduced over 10 years ago, proving this function isn't used much... Bug: http://curl.haxx.se/bug/view.cgi?id=1476 Reported-by: Tamir --- src/tool_getpass.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/tool_getpass.c b/src/tool_getpass.c index 4c8dcb9f1..34e0e6f5b 100644 --- a/src/tool_getpass.c +++ b/src/tool_getpass.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2012, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -52,6 +52,7 @@ # endif #endif +#include #define _MPRINTF_REPLACE #include @@ -229,7 +230,7 @@ char *getpass_r(const char *prompt, /* prompt to display */ bool disabled; int fd = open("/dev/tty", O_RDONLY); if(-1 == fd) - fd = 1; /* use stdin if the tty couldn't be used */ + fd = STDIN_FILENO; /* use stdin if the tty couldn't be used */ disabled = ttyecho(FALSE, fd); /* disable terminal echo */ @@ -246,7 +247,7 @@ char *getpass_r(const char *prompt, /* prompt to display */ (void)ttyecho(TRUE, fd); /* enable echo */ } - if(1 != fd) + if(STDIN_FILENO != fd) close(fd); return password; /* return pointer to buffer */ -- cgit v1.2.3