Commit 65d57b30 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6

Pull crypto fix from Herbert Xu:
 "This fixes a bug in the algif_hash interface that may lead to crashes
  when used with certain algorithms such as HMAC"

* 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  crypto: algif_hash - Only export and import on sockets with data
parents c8fff3ed 4afa5f96
...@@ -181,9 +181,14 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags) ...@@ -181,9 +181,14 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags)
struct sock *sk2; struct sock *sk2;
struct alg_sock *ask2; struct alg_sock *ask2;
struct hash_ctx *ctx2; struct hash_ctx *ctx2;
bool more;
int err; int err;
err = crypto_ahash_export(req, state); lock_sock(sk);
more = ctx->more;
err = more ? crypto_ahash_export(req, state) : 0;
release_sock(sk);
if (err) if (err)
return err; return err;
...@@ -194,7 +199,10 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags) ...@@ -194,7 +199,10 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags)
sk2 = newsock->sk; sk2 = newsock->sk;
ask2 = alg_sk(sk2); ask2 = alg_sk(sk2);
ctx2 = ask2->private; ctx2 = ask2->private;
ctx2->more = 1; ctx2->more = more;
if (!more)
return err;
err = crypto_ahash_import(&ctx2->req, state); err = crypto_ahash_import(&ctx2->req, state);
if (err) { if (err) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment