Avoid segfault if verify header appears longer than io_u
authorJens Axboe <axboe@kernel.dk>
Tue, 6 Mar 2012 16:46:44 +0000 (17:46 +0100)
committerJens Axboe <axboe@kernel.dk>
Tue, 6 Mar 2012 16:46:44 +0000 (17:46 +0100)
commit0ae2c6e1d4727515e35e682eae6776fe55fa0275
tree2f49bc2744dcf86eafeb9d5fca41bfcb6d85e40b
parente55f8f307385e77ea561e7bbf9c76842ead9d7a3
Avoid segfault if verify header appears longer than io_u

Running this job:

[global]
ioengine=libaio
direct=1
filename=/tmp/foo
iodepth=128
size=10M
loops=1
group_reporting=1
readwrite=write
do_verify=0
verify=md5
numjobs=1
thread
verify_dump=1

[small_writes]
offset=0G
blocksize=512

[large_writes]
offset=1G
blocksize=1M

Followed by this job:

[global]
ioengine=libaio
direct=1
filename=/tmp/foo
iodepth=128
size=1M
loops=1
group_reporting=1
readwrite=read
do_verify=1
verify=md5
verify_fatal=1
numjobs=1
thread
verify_dump=1
bs=4k

[large_reads]
offset=0G
blocksize=1M

[small_reads]
offset=1G
blocksize=512

Will cause a segfault, since the bs=512 job appears to stumble
upon a 1mb header, making fio attempt to verify a much bigger
area than what we have read.

This looks like a zone bug. For now, check in a fix that makes
fio validate the verify header a bit harder.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
verify.c