X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=print-tree.c;h=3c585e31f1fc09b47f688130f2ad06867e3d9d45;hb=c76b05fba284c68c6cb7b710dbb95a42089e8538;hp=c752ba25dbf9277f42dc689b4bbc1ae6a7930c13;hpb=36db1080c31aa1732dea65f76fb2225a939c25ab;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/print-tree.c b/print-tree.c index c752ba2..3c585e3 100644 --- a/print-tree.c +++ b/print-tree.c @@ -198,9 +198,17 @@ void print_chunk_item(struct extent_buffer *eb, struct btrfs_chunk *chunk) { u16 num_stripes = btrfs_chunk_num_stripes(eb, chunk); int i; - u32 chunk_item_size = btrfs_chunk_item_size(num_stripes); + u32 chunk_item_size; char chunk_flags_str[32] = {0}; + /* The chunk must contain at least one stripe */ + if (num_stripes < 1) { + printf("invalid num_stripes: %u\n", num_stripes); + return; + } + + chunk_item_size = btrfs_chunk_item_size(num_stripes); + if ((unsigned long)chunk + chunk_item_size > eb->len) { printf("\t\tchunk item invalid\n"); return; @@ -315,6 +323,9 @@ static void compress_type_to_str(u8 compress_type, char *ret) case BTRFS_COMPRESS_LZO: strcpy(ret, "lzo"); break; + case BTRFS_COMPRESS_ZSTD: + strcpy(ret, "zstd"); + break; default: sprintf(ret, "UNKNOWN.%d", compress_type); } @@ -1247,7 +1258,7 @@ void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *eb) break; case BTRFS_EXTENT_CSUM_KEY: print_extent_csum(eb, root->fs_info, item_size, - disk_key.offset); + offset); break; case BTRFS_EXTENT_DATA_KEY: print_file_extent_item(eb, item, i, ptr);