diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | readpass.c | 11 |
2 files changed, 9 insertions, 7 deletions
@@ -42,6 +42,9 @@ | |||
42 | - markus@cvs.openbsd.org 2001/11/07 22:53:21 | 42 | - markus@cvs.openbsd.org 2001/11/07 22:53:21 |
43 | [channels.h] | 43 | [channels.h] |
44 | crank c->path to 256 so they can hold a full hostname; dwd@bell-labs.com | 44 | crank c->path to 256 so they can hold a full hostname; dwd@bell-labs.com |
45 | - markus@cvs.openbsd.org 2001/11/08 10:51:08 | ||
46 | [readpass.c] | ||
47 | don't strdup too much data; from gotoh@taiyo.co.jp; ok millert. | ||
45 | 48 | ||
46 | 20011109 | 49 | 20011109 |
47 | - (stevesk) auth-pam.c: use do_pam_authenticate(PAM_DISALLOW_NULL_AUTHTOK) | 50 | - (stevesk) auth-pam.c: use do_pam_authenticate(PAM_DISALLOW_NULL_AUTHTOK) |
@@ -6851,4 +6854,4 @@ | |||
6851 | - Wrote replacements for strlcpy and mkdtemp | 6854 | - Wrote replacements for strlcpy and mkdtemp |
6852 | - Released 1.0pre1 | 6855 | - Released 1.0pre1 |
6853 | 6856 | ||
6854 | $Id: ChangeLog,v 1.1647 2001/11/12 00:04:54 djm Exp $ | 6857 | $Id: ChangeLog,v 1.1648 2001/11/12 00:05:20 djm Exp $ |
diff --git a/readpass.c b/readpass.c index 577a407f3..a0429818e 100644 --- a/readpass.c +++ b/readpass.c | |||
@@ -32,7 +32,7 @@ | |||
32 | */ | 32 | */ |
33 | 33 | ||
34 | #include "includes.h" | 34 | #include "includes.h" |
35 | RCSID("$OpenBSD: readpass.c,v 1.22 2001/07/14 15:10:16 stevesk Exp $"); | 35 | RCSID("$OpenBSD: readpass.c,v 1.23 2001/11/08 10:51:08 markus Exp $"); |
36 | 36 | ||
37 | #include "xmalloc.h" | 37 | #include "xmalloc.h" |
38 | #include "readpass.h" | 38 | #include "readpass.h" |
@@ -45,7 +45,7 @@ ssh_askpass(char *askpass, const char *msg) | |||
45 | { | 45 | { |
46 | pid_t pid; | 46 | pid_t pid; |
47 | size_t len; | 47 | size_t len; |
48 | char *nl, *pass; | 48 | char *pass; |
49 | int p[2], status; | 49 | int p[2], status; |
50 | char buf[1024]; | 50 | char buf[1024]; |
51 | 51 | ||
@@ -71,16 +71,15 @@ ssh_askpass(char *askpass, const char *msg) | |||
71 | fatal("ssh_askpass: exec(%s): %s", askpass, strerror(errno)); | 71 | fatal("ssh_askpass: exec(%s): %s", askpass, strerror(errno)); |
72 | } | 72 | } |
73 | close(p[1]); | 73 | close(p[1]); |
74 | len = read(p[0], buf, sizeof buf); | 74 | len = read(p[0], buf, sizeof buf -1); |
75 | close(p[0]); | 75 | close(p[0]); |
76 | while (waitpid(pid, &status, 0) < 0) | 76 | while (waitpid(pid, &status, 0) < 0) |
77 | if (errno != EINTR) | 77 | if (errno != EINTR) |
78 | break; | 78 | break; |
79 | if (len <= 1) | 79 | if (len <= 1) |
80 | return xstrdup(""); | 80 | return xstrdup(""); |
81 | nl = strchr(buf, '\n'); | 81 | buf[len] = '\0'; |
82 | if (nl) | 82 | buf[strcspn(buf, "\r\n")] = '\0'; |
83 | *nl = '\0'; | ||
84 | pass = xstrdup(buf); | 83 | pass = xstrdup(buf); |
85 | memset(buf, 0, sizeof(buf)); | 84 | memset(buf, 0, sizeof(buf)); |
86 | return pass; | 85 | return pass; |