]> git.ipfire.org Git - thirdparty/util-linux.git/commit
blkdiscard: fix underflow when offset is greater than device size
authorRaphael S. Carvalho <raphaelsc@cloudius-systems.com>
Thu, 9 Oct 2014 00:46:07 +0000 (21:46 -0300)
committerKarel Zak <kzak@redhat.com>
Tue, 14 Oct 2014 10:04:14 +0000 (12:04 +0200)
commit303884a4955db8b00d0eecf3b59a8c70895897b8
treedaad33f00fdb536c25252fedea838cdaa9e1b6c4
parente71b0aadaa20b21e909f16dcf77c84b63173044e
blkdiscard: fix underflow when offset is greater than device size

If offset (range[0]) is greater than device size (blksize), the variable 'end'
will be greater than blksize, and range[1] (length) will be recalculated.
The underflow happens when subtracting range[0] (offset) from blksize, thus
range[1] will be the result of an underflow. The bug leads to unwanted behavior
from the program, where range[1] is likely to be a high number and then will
discard a considerable amount of blocks from the device. The fix consists of
exitting the program with an error message when the condition stated above is
true. Spotted while auditing the code.

Signed-off-by: Raphael S. Carvalho <raphaelsc@cloudius-systems.com>
sys-utils/blkdiscard.c