]> granicus.if.org Git - curl/commitdiff
getpass_r: read from stdin, not stdout!
authorDaniel Stenberg <daniel@haxx.se>
Mon, 2 Feb 2015 23:30:45 +0000 (00:30 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 2 Feb 2015 23:30:45 +0000 (00:30 +0100)
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

index 4c8dcb9f1f8d8435b70d5bee2e92fc2d2d39155a..34e0e6f5b5eda864d4a2747a6c188908b4fd2979 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, 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 <unistd.h>
 #define _MPRINTF_REPLACE
 #include <curl/mprintf.h>
 
@@ -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 */