summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/include/ape/limits.h1
-rw-r--r--sys/src/ape/lib/v/plan9/getpass.c5
2 files changed, 4 insertions, 2 deletions
diff --git a/sys/include/ape/limits.h b/sys/include/ape/limits.h
index dc1a937dc..0837bbe1d 100644
--- a/sys/include/ape/limits.h
+++ b/sys/include/ape/limits.h
@@ -65,6 +65,7 @@
#define NGROUPS_MAX 10
/*#define OPEN_MAX _POSIX_OPEN_MAX */
/*#define PAGESIZE 1 */
+#define PASS_MAX 64
/*#define PATH_MAX _POSIX_PATH_MAX */
/*#define PIPE_BUF _POSIX_PIPE_BUF */
/*#define RTSIG_MAX _POSIX_RTSIG_MAX */
diff --git a/sys/src/ape/lib/v/plan9/getpass.c b/sys/src/ape/lib/v/plan9/getpass.c
index f8f6a8e89..1b8bbc325 100644
--- a/sys/src/ape/lib/v/plan9/getpass.c
+++ b/sys/src/ape/lib/v/plan9/getpass.c
@@ -2,6 +2,7 @@
#define _RESEARCH_SOURCE
#include <stdio.h>
#include <signal.h>
+#include <limits.h>
#include <libv.h>
char *
@@ -10,7 +11,7 @@ getpass(char *prompt)
int c;
char *p;
FILE *fi;
- static char pbuf[9];
+ static char pbuf[PASS_MAX];
void (*sig)(int);
if ((fi = fopen("/dev/cons", "r")) == NULL)
@@ -28,7 +29,7 @@ getpass(char *prompt)
else if (c == '\b') {
if (p > pbuf)
p--;
- } else if (p < &pbuf[8])
+ } else if (p < &pbuf[sizeof(pbuf)-1])
*p++ = c;
*p = '\0';