Commit 08c1af8
dm integrity: fix memory corruption when tag_size is less than digest size
It is possible to set up dm-integrity in such a way that the
"tag_size" parameter is less than the actual digest size. In this
situation, a part of the digest beyond tag_size is ignored.
In this case, dm-integrity would write beyond the end of the
ic->recalc_tags array and corrupt memory. The corruption happened in
integrity_recalc->integrity_sector_checksum->crypto_shash_final.
Fix this corruption by increasing the tags array so that it has enough
padding at the end to accomodate the loop in integrity_recalc() being
able to write a full digest size for the last member of the tags
array.
Cc: stable@vger.kernel.org # v4.19+
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>1 parent ce522ba commit 08c1af8
1 file changed
Lines changed: 5 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4399 | 4399 | | |
4400 | 4400 | | |
4401 | 4401 | | |
| 4402 | + | |
4402 | 4403 | | |
4403 | 4404 | | |
4404 | 4405 | | |
| |||
4412 | 4413 | | |
4413 | 4414 | | |
4414 | 4415 | | |
4415 | | - | |
4416 | | - | |
| 4416 | + | |
| 4417 | + | |
| 4418 | + | |
| 4419 | + | |
4417 | 4420 | | |
4418 | 4421 | | |
4419 | 4422 | | |
| |||
0 commit comments