diff options
-rw-r--r-- | passwd/apr_getpass.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/passwd/apr_getpass.c b/passwd/apr_getpass.c index a5cbdea43..1004575af 100644 --- a/passwd/apr_getpass.c +++ b/passwd/apr_getpass.c @@ -215,12 +215,10 @@ static char *getpass(const char *prompt) APR_DECLARE(apr_status_t) apr_password_get(const char *prompt, char *pwbuf, size_t *bufsiz) { char *pw_got = getpass(prompt); - if (strlen(pw_got) > (*bufsiz - 1)) { - *bufsiz = ERR_OVERFLOW; - memset(pw_got, 0, strlen(pw_got)); - return APR_ENAMETOOLONG; - } apr_cpystrn(pwbuf, pw_got, *bufsiz); memset(pw_got, 0, strlen(pw_got)); + if (strlen(pw_got) >= *bufsiz) { + return APR_ENAMETOOLONG; + } return APR_SUCCESS; } |