Skip to content

Commit 1cb15b1

Browse files
adam900710kdave
authored andcommitted
btrfs: lzo: add error message for invalid headers
Inside btrfs we always pair -EUCLEAN error with an error message to indicate which data is corrupted. However there are 3 cases inside lzo decompression where there is no error message for corrupted headers. Add those missing error messages to show exactly where the corruption is. Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
1 parent 3dcd507 commit 1cb15b1

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

fs/btrfs/lzo.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -552,17 +552,26 @@ int lzo_decompress(struct list_head *ws, const u8 *data_in,
552552
size_t max_segment_len = workspace_buf_length(fs_info);
553553
int ret;
554554

555-
if (unlikely(srclen < LZO_LEN || srclen > max_segment_len + LZO_LEN * 2))
555+
if (unlikely(srclen < LZO_LEN || srclen > max_segment_len + LZO_LEN * 2)) {
556+
btrfs_err(fs_info, "invalid lzo header length, has %zu expect (%u, %zu)",
557+
srclen, LZO_LEN, max_segment_len + LZO_LEN * 2);
556558
return -EUCLEAN;
559+
}
557560

558561
in_len = get_unaligned_le32(data_in);
559-
if (unlikely(in_len != srclen))
562+
if (unlikely(in_len != srclen)) {
563+
btrfs_err(fs_info, "invalid lzo header length, has %zu expect %zu",
564+
in_len, srclen);
560565
return -EUCLEAN;
566+
}
561567
data_in += LZO_LEN;
562568

563569
in_len = get_unaligned_le32(data_in);
564-
if (unlikely(in_len != srclen - LZO_LEN * 2))
570+
if (unlikely(in_len != srclen - LZO_LEN * 2)) {
571+
btrfs_err(fs_info, "invalid lzo segment length, has %zu expect %zu",
572+
in_len, srclen - LZO_LEN * 2);
565573
return -EUCLEAN;
574+
}
566575
data_in += LZO_LEN;
567576

568577
out_len = sectorsize;

0 commit comments

Comments
 (0)