127 lines
7.7 KiB
Plaintext
127 lines
7.7 KiB
Plaintext
URL: https://bugzilla.kernel.org/show_bug.cgi?id=169311
|
|
Lukas Lueg 2016-09-18 09:23:44 UTC
|
|
|
|
More news from the fuzzer. The attached image causes a heap-buffer-overflow
|
|
when running btrfsck with ASAN over it; using btrfs-prog s v4.7.2-56-ge8c2013
|
|
|
|
|
|
==32491==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60c00000bf5c at pc 0x000000614b63 bp 0x7ffeacb5c3b0 sp 0x7ffeacb
|
|
5c3a8
|
|
READ of size 8 at 0x60c00000bf5c thread T0
|
|
#0 0x614b62 in crc32c_intel /home/lukas/dev/btrfsfuzz/src-asan/crc32c.c:75:19
|
|
#1 0x614c09 in crc32c_le /home/lukas/dev/btrfsfuzz/src-asan/crc32c.c:221:9
|
|
#2 0x58de58 in __csum_tree_block_size /home/lukas/dev/btrfsfuzz/src-asan/disk-io.c:139:8
|
|
#3 0x58dd88 in csum_tree_block_size /home/lukas/dev/btrfsfuzz/src-asan/disk-io.c:159:9
|
|
#4 0x58dfa1 in csum_tree_block_fs_info /home/lukas/dev/btrfsfuzz/src-asan/disk-io.c:174:9
|
|
#5 0x58eb64 in read_tree_block_fs_info /home/lukas/dev/btrfsfuzz/src-asan/disk-io.c:348:19
|
|
#6 0x5f2f84 in read_tree_block /home/lukas/dev/btrfsfuzz/src-asan/./disk-io.h:112:9
|
|
#7 0x5f2d62 in travel_tree /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:692:7
|
|
#8 0x5f2bab in add_refs_for_implied /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:748:8
|
|
#9 0x5eff59 in map_implied_refs /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:766:9
|
|
#10 0x5eefa9 in qgroup_verify_all /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:1366:8
|
|
#11 0x51f08f in cmd_check /home/lukas/dev/btrfsfuzz/src-asan/cmds-check.c:11637:9
|
|
#12 0x4f0f81 in main /home/lukas/dev/btrfsfuzz/src-asan/btrfs.c:243:8
|
|
#13 0x7fbf35742730 in __libc_start_main (/lib64/libc.so.6+0x20730)
|
|
#14 0x4213f8 in _start (/home/lukas/dev/btrfsfuzz/bin-asan/bin/btrfs+0x4213f8)
|
|
|
|
checking extents
|
|
Chunk[256, 228, 0]: length(4194304), offset(0), type(2) is not found in block group
|
|
Chunk[256, 228, 0] stripe[1, 0] is not found in dev extent
|
|
Chunk[256, 228, 4194304]: length(1638400), offset(4194304), type(5) is not found in block group
|
|
Chunk[256, 228, 4194304] stripe[1, 4194304] is not found in dev extent
|
|
Chunk[256, 228, 5832704]: length(1638400), offset(5832704), type(5) is not found in block group
|
|
Chunk[256, 228, 5832704] stripe[1, 5832704] is not found in dev extent
|
|
ref mismatch on [131072 4096] extent item 0, found 1
|
|
Backref 131072 parent 3 root 3 not found in extent tree
|
|
backpointer mismatch on [131072 4096]
|
|
ref mismatch on [4194304 4096] extent item 0, found 1
|
|
Backref 4194304 parent 5 root 5 not found in extent tree
|
|
backpointer mismatch on [4194304 4096]
|
|
ref mismatch on [4198400 4096] extent item 0, found 1
|
|
Backref 4198400 parent 1 root 1 not found in extent tree
|
|
backpointer mismatch on [4198400 4096]
|
|
ref mismatch on [4231168 4096] extent item 0, found 1
|
|
Backref 4231168 parent 7 root 7 not found in extent tree
|
|
backpointer mismatch on [4231168 4096]
|
|
ref mismatch on [3472328296227680304 3472328296227680304] extent item 0, found 1
|
|
Backref 3472328296227680304 root 1 owner 2 offset 0 num_refs 0 not found in extent tree
|
|
Incorrect local backref count on 3472328296227680304 root 1 owner 2 offset 0 found 1 wanted 0 back 0x60800000bc20
|
|
backpointer mismatch on [3472328296227680304 3472328296227680304]
|
|
Dev extent's total-byte(0) is not equal to byte-used(7471104) in dev[1, 216, 1]
|
|
Errors found in extent allocation tree or chunk allocation
|
|
checking free space cache
|
|
checking fs roots
|
|
checking csums
|
|
checking root refs
|
|
checking quota groups
|
|
=================================================================
|
|
==32491==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60c00000bf5c at pc 0x000000614b63 bp 0x7ffeacb5c3b0 sp 0x7ffeacb5c3a8
|
|
READ of size 8 at 0x60c00000bf5c thread T0
|
|
#0 0x614b62 in crc32c_intel /home/lukas/dev/btrfsfuzz/src-asan/crc32c.c:75:19
|
|
#1 0x614c09 in crc32c_le /home/lukas/dev/btrfsfuzz/src-asan/crc32c.c:221:9
|
|
#2 0x58de58 in __csum_tree_block_size /home/lukas/dev/btrfsfuzz/src-asan/disk-io.c:139:8
|
|
#3 0x58dd88 in csum_tree_block_size /home/lukas/dev/btrfsfuzz/src-asan/disk-io.c:159:9
|
|
#4 0x58dfa1 in csum_tree_block_fs_info /home/lukas/dev/btrfsfuzz/src-asan/disk-io.c:174:9
|
|
#5 0x58eb64 in read_tree_block_fs_info /home/lukas/dev/btrfsfuzz/src-asan/disk-io.c:348:19
|
|
#6 0x5f2f84 in read_tree_block /home/lukas/dev/btrfsfuzz/src-asan/./disk-io.h:112:9
|
|
#7 0x5f2d62 in travel_tree /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:692:7
|
|
#8 0x5f2bab in add_refs_for_implied /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:748:8
|
|
#9 0x5eff59 in map_implied_refs /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:766:9
|
|
#10 0x5eefa9 in qgroup_verify_all /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:1366:8
|
|
#11 0x51f08f in cmd_check /home/lukas/dev/btrfsfuzz/src-asan/cmds-check.c:11637:9
|
|
#12 0x4f0f81 in main /home/lukas/dev/btrfsfuzz/src-asan/btrfs.c:243:8
|
|
#13 0x7fbf35742730 in __libc_start_main (/lib64/libc.so.6+0x20730)
|
|
#14 0x4213f8 in _start (/home/lukas/dev/btrfsfuzz/bin-asan/bin/btrfs+0x4213f8)
|
|
|
|
0x60c00000bf5c is located 28 bytes to the right of 128-byte region [0x60c00000bec0,0x60c00000bf40)
|
|
allocated by thread T0 here:
|
|
#0 0x4bfd40 in calloc (/home/lukas/dev/btrfsfuzz/bin-asan/bin/btrfs+0x4bfd40)
|
|
#1 0x5c181a in __alloc_extent_buffer /home/lukas/dev/btrfsfuzz/src-asan/extent_io.c:542:7
|
|
#2 0x5c1c76 in alloc_extent_buffer /home/lukas/dev/btrfsfuzz/src-asan/extent_io.c:646:8
|
|
#3 0x58e01c in btrfs_find_create_tree_block /home/lukas/dev/btrfsfuzz/src-asan/disk-io.c:193:9
|
|
#4 0x58ea90 in read_tree_block_fs_info /home/lukas/dev/btrfsfuzz/src-asan/disk-io.c:339:7
|
|
#5 0x5f2f84 in read_tree_block /home/lukas/dev/btrfsfuzz/src-asan/./disk-io.h:112:9
|
|
#6 0x5f2d62 in travel_tree /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:692:7
|
|
#7 0x5f2bab in add_refs_for_implied /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:748:8
|
|
#8 0x5eff59 in map_implied_refs /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:766:9
|
|
#9 0x5eefa9 in qgroup_verify_all /home/lukas/dev/btrfsfuzz/src-asan/qgroup-verify.c:1366:8
|
|
#10 0x51f08f in cmd_check /home/lukas/dev/btrfsfuzz/src-asan/cmds-check.c:11637:9
|
|
#11 0x4f0f81 in main /home/lukas/dev/btrfsfuzz/src-asan/btrfs.c:243:8
|
|
#12 0x7fbf35742730 in __libc_start_main (/lib64/libc.so.6+0x20730)
|
|
|
|
SUMMARY: AddressSanitizer: heap-buffer-overflow /home/lukas/dev/btrfsfuzz/src-asan/crc32c.c:75:19 in crc32c_intel
|
|
Shadow bytes around the buggy address:
|
|
0x0c187fff9790: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
|
0x0c187fff97a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
|
0x0c187fff97b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
|
0x0c187fff97c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
|
0x0c187fff97d0: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
|
|
=>0x0c187fff97e0: 00 00 00 00 00 00 00 00 fa fa fa[fa]fa fa fa fa
|
|
0x0c187fff97f0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa
|
|
0x0c187fff9800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
|
0x0c187fff9810: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
|
0x0c187fff9820: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
|
0x0c187fff9830: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
|
Shadow byte legend (one shadow byte represents 8 application bytes):
|
|
Addressable: 00
|
|
Partially addressable: 01 02 03 04 05 06 07
|
|
Heap left redzone: fa
|
|
Heap right redzone: fb
|
|
Freed heap region: fd
|
|
Stack left redzone: f1
|
|
Stack mid redzone: f2
|
|
Stack right redzone: f3
|
|
Stack partial redzone: f4
|
|
Stack after return: f5
|
|
Stack use after scope: f8
|
|
Global redzone: f9
|
|
Global init order: f6
|
|
Poisoned by user: f7
|
|
Container overflow: fc
|
|
Array cookie: ac
|
|
Intra object redzone: bb
|
|
ASan internal: fe
|
|
Left alloca redzone: ca
|
|
Right alloca redzone: cb
|
|
==32491==ABORTING
|