ubifs: Fix out-of-bounds memory access caused by abnormal value of node_len
authorLiu Song <liu.song11@zte.com.cn>
Thu, 16 Jan 2020 15:36:07 +0000 (23:36 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 1 Oct 2020 11:12:40 +0000 (13:12 +0200)
commit2e21f66730382ec5898e36633a5f4fa56e35de10
tree9da077c6082b238540a51a53b74cdc8c6afa1e8f
parent64901930e7fbfe74190c1714bbb4fa5f6ce1e992
ubifs: Fix out-of-bounds memory access caused by abnormal value of node_len

[ Upstream commit acc5af3efa303d5f36cc8c0f61716161f6ca1384 ]

In “ubifs_check_node”, when the value of "node_len" is abnormal,
the code will goto label of "out_len" for execution. Then, in the
following "ubifs_dump_node", if inode type is "UBIFS_DATA_NODE",
in "print_hex_dump", an out-of-bounds access may occur due to the
wrong "ch->len".

Therefore, when the value of "node_len" is abnormal, data length
should to be adjusted to a reasonable safe range. At this time,
structured data is not credible, so dump the corrupted data directly
for analysis.

Signed-off-by: Liu Song <liu.song11@zte.com.cn>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/ubifs/io.c