summaryrefslogtreecommitdiffstats
path: root/login-utils/cryptocard.c
diff options
context:
space:
mode:
Diffstat (limited to 'login-utils/cryptocard.c')
-rw-r--r--login-utils/cryptocard.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/login-utils/cryptocard.c b/login-utils/cryptocard.c
index e735c7273..b3edc6fd4 100644
--- a/login-utils/cryptocard.c
+++ b/login-utils/cryptocard.c
@@ -85,7 +85,9 @@ get_key()
int rfd;
struct stat statbuf;
- snprintf(keyfile, sizeof(keyfile), "%s/.cryptocard", pwd->pw_dir);
+ if (strlen(pwd->pw_dir) + 13 > sizeof(keyfile))
+ goto bail_out;
+ sprintf(keyfile, "%s/.cryptocard", pwd->pw_dir);
if ((rfd = open(keyfile, O_RDONLY)) < 0) {
syslog(LOG_NOTICE, "can't open %s for reading", keyfile);
@@ -182,7 +184,8 @@ cryptocard(void)
challenge = generate_challenge();
if (challenge == NULL) return 0;
- snprintf(prompt, sizeof(prompt), "%s Password: ", challenge);
+ if (strlen(challenge) + 13 > sizeof(prompt)) return 0;
+ sprintf(prompt, "%s Password: ", challenge);
alarm((unsigned int)timeout); /* give user time to fiddle with card */
response = getpass(prompt); /* presents challenge and gets response */