From a0e1fec394e45538145f9db5446b24f0b25d7514 Mon Sep 17 00:00:00 2001 From: Dmitry Kasatkin Date: Thu, 26 Jan 2012 19:13:24 +0200 Subject: [PATCH] --- yaml --- r: 287118 b: refs/heads/master c: 86f8bedc9e1a8ddb4f1d9ff1f0c1229cc0797d6d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/lib/digsig.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a7fa5e2cf894..103946c6e29b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 43b2c0aeaab2237996a72f9b9d7952ba82d56913 +refs/heads/master: 86f8bedc9e1a8ddb4f1d9ff1f0c1229cc0797d6d diff --git a/trunk/lib/digsig.c b/trunk/lib/digsig.c index b67e82c024b3..286d558033e2 100644 --- a/trunk/lib/digsig.c +++ b/trunk/lib/digsig.c @@ -109,9 +109,13 @@ static int digsig_verify_rsa(struct key *key, datap = pkh->mpi; endp = ukp->data + ukp->datalen; + err = -ENOMEM; + for (i = 0; i < pkh->nmpi; i++) { unsigned int remaining = endp - datap; pkey[i] = mpi_read_from_buffer(datap, &remaining); + if (!pkey[i]) + goto err; datap += remaining; } @@ -168,8 +172,8 @@ static int digsig_verify_rsa(struct key *key, mpi_free(res); kfree(out1); kfree(out2); - mpi_free(pkey[0]); - mpi_free(pkey[1]); + while (--i >= 0) + mpi_free(pkey[i]); err1: up_read(&key->sem);