Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  [CRYPTO] xcbc: Fix crash when ipsec uses xcbc-mac with big data chunk
This commit is contained in:
Linus Torvalds 2008-04-02 07:43:37 -07:00
commit 8774b7f63b

View file

@ -116,13 +116,11 @@ static int crypto_xcbc_digest_update2(struct hash_desc *pdesc,
struct crypto_xcbc_ctx *ctx = crypto_hash_ctx_aligned(parent); struct crypto_xcbc_ctx *ctx = crypto_hash_ctx_aligned(parent);
struct crypto_cipher *tfm = ctx->child; struct crypto_cipher *tfm = ctx->child;
int bs = crypto_hash_blocksize(parent); int bs = crypto_hash_blocksize(parent);
unsigned int i = 0;
do { for (;;) {
struct page *pg = sg_page(sg);
struct page *pg = sg_page(&sg[i]); unsigned int offset = sg->offset;
unsigned int offset = sg[i].offset; unsigned int slen = sg->length;
unsigned int slen = sg[i].length;
if (unlikely(slen > nbytes)) if (unlikely(slen > nbytes))
slen = nbytes; slen = nbytes;
@ -182,8 +180,11 @@ static int crypto_xcbc_digest_update2(struct hash_desc *pdesc,
offset = 0; offset = 0;
pg++; pg++;
} }
i++;
} while (nbytes>0); if (!nbytes)
break;
sg = scatterwalk_sg_next(sg);
}
return 0; return 0;
} }