diff options
author | Dmitry Kasatkin <dmitry.kasatkin@intel.com> | 2012-01-26 12:13:24 -0500 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2012-02-01 08:24:04 -0500 |
commit | 86f8bedc9e1a8ddb4f1d9ff1f0c1229cc0797d6d (patch) | |
tree | a0b67fa9e778cba871b8135cf6976066d11af83b /lib | |
parent | 43b2c0aeaab2237996a72f9b9d7952ba82d56913 (diff) |
lib/digsig: checks for NULL return value
mpi_read_from_buffer() return value must not be NULL.
Signed-off-by: Dmitry Kasatkin <dmitry.kasatkin@intel.com>
Reviewed-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/digsig.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/digsig.c b/lib/digsig.c index b67e82c024b3..286d558033e2 100644 --- a/lib/digsig.c +++ b/lib/digsig.c | |||
@@ -109,9 +109,13 @@ static int digsig_verify_rsa(struct key *key, | |||
109 | datap = pkh->mpi; | 109 | datap = pkh->mpi; |
110 | endp = ukp->data + ukp->datalen; | 110 | endp = ukp->data + ukp->datalen; |
111 | 111 | ||
112 | err = -ENOMEM; | ||
113 | |||
112 | for (i = 0; i < pkh->nmpi; i++) { | 114 | for (i = 0; i < pkh->nmpi; i++) { |
113 | unsigned int remaining = endp - datap; | 115 | unsigned int remaining = endp - datap; |
114 | pkey[i] = mpi_read_from_buffer(datap, &remaining); | 116 | pkey[i] = mpi_read_from_buffer(datap, &remaining); |
117 | if (!pkey[i]) | ||
118 | goto err; | ||
115 | datap += remaining; | 119 | datap += remaining; |
116 | } | 120 | } |
117 | 121 | ||
@@ -168,8 +172,8 @@ err: | |||
168 | mpi_free(res); | 172 | mpi_free(res); |
169 | kfree(out1); | 173 | kfree(out1); |
170 | kfree(out2); | 174 | kfree(out2); |
171 | mpi_free(pkey[0]); | 175 | while (--i >= 0) |
172 | mpi_free(pkey[1]); | 176 | mpi_free(pkey[i]); |
173 | err1: | 177 | err1: |
174 | up_read(&key->sem); | 178 | up_read(&key->sem); |
175 | 179 | ||