aboutsummaryrefslogtreecommitdiffstats
path: root/g10/sign.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/sign.c')
-rw-r--r--g10/sign.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/g10/sign.c b/g10/sign.c
index c1a09bae4..155dab6dc 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -246,6 +246,8 @@ do_sign( PKT_secret_key *sk, PKT_signature *sig,
sig->digest_start[1] = dp[1];
frame = encode_md_value( sk->pubkey_algo, md,
digest_algo, mpi_get_nbits(sk->skey[0]), 0 );
+ if (!frame)
+ return G10ERR_GENERAL;
rc = pubkey_sign( sk->pubkey_algo, sig->data, frame, sk->skey );
mpi_free(frame);
if (!rc && !opt.no_sig_create_check) {
@@ -260,8 +262,12 @@ do_sign( PKT_secret_key *sk, PKT_signature *sig,
frame = encode_md_value (pk->pubkey_algo, md,
sig->digest_algo,
mpi_get_nbits(pk->pkey[0]), 0);
- rc = pubkey_verify (pk->pubkey_algo, frame, sig->data, pk->pkey,
- NULL, NULL );
+ if (!frame)
+ rc = G10ERR_GENERAL;
+ else
+ rc = pubkey_verify (pk->pubkey_algo, frame,
+ sig->data, pk->pkey,
+ NULL, NULL );
mpi_free (frame);
}
if (rc)