aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/getpass.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/getpass.c b/src/getpass.c
index f0b82837..14e5933a 100644
--- a/src/getpass.c
+++ b/src/getpass.c
@@ -123,6 +123,11 @@ int ssh_getpass(const char *prompt,
DWORD mode = 0;
int ok;
+ /* fgets needs at least len - 1 */
+ if (prompt == NULL || buf == NULL || len < 2) {
+ return -1;
+ }
+
/* get stdin and mode */
h = GetStdHandle(STD_INPUT_HANDLE);
if (!GetConsoleMode(h, &mode)) {
@@ -207,6 +212,11 @@ int ssh_getpass(const char *prompt,
int ok = 0;
int fd = -1;
+ /* fgets needs at least len - 1 */
+ if (prompt == NULL || buf == NULL || len < 2) {
+ return -1;
+ }
+
ZERO_STRUCT(attr);
ZERO_STRUCT(old_attr);