X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=gcrypt.c;h=3c6c1ad1d74c234f56f289a46fad98cede2a5140;hp=45a1c67d20da0b6d229180de92be10644a63d082;hb=5ff39998bf0ce71bd8fc8d0f002ceb81b711992f;hpb=6e0b28e02a1013c019a3225e922b71f913bfbae4 diff --git a/gcrypt.c b/gcrypt.c index 45a1c67d..3c6c1ad1 100644 --- a/gcrypt.c +++ b/gcrypt.c @@ -212,7 +212,7 @@ static int decode_key(const char *key_file, const char *header_str, ret = mmap_full_file(key_file, O_RDONLY, &map, &map_size, NULL); if (ret < 0) - return ret; + goto out; ret = -E_KEY_MARKER; if (strncmp(map, header_str, strlen(header_str))) goto unmap; @@ -257,6 +257,7 @@ unmap: free(blob); blob = NULL; } +out: *result = blob; return ret; } @@ -781,6 +782,9 @@ int priv_decrypt(const char *key_file, unsigned char *outbuf, gcry_sexp_t in, out, priv_key; size_t nbytes; + ret = check_key_file(key_file, true); + if (ret < 0) + return ret; PARA_INFO_LOG("decrypting %d byte input\n", inlen); /* key_file -> asymmetric key priv */ ret = get_private_key(key_file, &priv);