aboutsummaryrefslogtreecommitdiffstats
path: root/res/res_crypto.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_crypto.c')
-rw-r--r--res/res_crypto.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/res/res_crypto.c b/res/res_crypto.c
index eea8356af..c2c33d015 100644
--- a/res/res_crypto.c
+++ b/res/res_crypto.c
@@ -118,7 +118,11 @@ static int pw_cb(char *buf, int size, int rwflag, void *userdata)
if (key->infd > -1) {
snprintf(prompt, sizeof(prompt), ">>>> passcode for %s key '%s': ",
key->ktype == AST_KEY_PRIVATE ? "PRIVATE" : "PUBLIC", key->name);
- write(key->outfd, prompt, strlen(prompt));
+ if (write(key->outfd, prompt, strlen(prompt)) < 0) {
+ /* Note that we were at least called */
+ key->infd = -2;
+ return -1;
+ }
memset(buf, 0, sizeof(buf));
tmp = ast_hide_password(key->infd);
memset(buf, 0, size);
@@ -194,8 +198,7 @@ static struct ast_key *try_load_key (char *dir, char *fname, int ifd, int ofd, i
/* Calculate a "whatever" quality md5sum of the key */
char buf[256];
memset(buf, 0, 256);
- fgets(buf, sizeof(buf), f);
- if (!feof(f)) {
+ if (fgets(buf, sizeof(buf), f)) {
MD5Update(&md5, (unsigned char *) buf, strlen(buf));
}
}