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 #include +#include #include 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';