Skip to content

Commit

Permalink
crypto: shash - Fix unaligned calculation with short length
Browse files Browse the repository at this point in the history
When the total length is shorter than the calculated number of unaligned bytes, the call to shash->update breaks. For example, calling crc32c on unaligned buffer with length of 1 can result in a system crash.

Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
  • Loading branch information
Yehuda Sadeh authored and herbertx committed Mar 27, 2009
1 parent 3341323 commit f4f6899
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions crypto/shash.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ static int shash_update_unaligned(struct shash_desc *desc, const u8 *data,
u8 buf[shash_align_buffer_size(unaligned_len, alignmask)]
__attribute__ ((aligned));

if (unaligned_len > len)
unaligned_len = len;

memcpy(buf, data, unaligned_len);

return shash->update(desc, buf, unaligned_len) ?:
Expand Down

0 comments on commit f4f6899

Please sign in to comment.