Message ID | 20250414023954.582146-1-chao@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [f2fs-dev] dump.f2fs: support dump version_bitmap and chksum in checkpoint | expand |
external/f2fs-tools/fsck/mount.c:584:4: error: 'snprintf' will always overflow; destination buffer has size 30, but size argument is 31 [-Werror,-Wbuiltin-memcpy-chk-size] 584 | snprintf(str, 31, "%s[%d]", i == NAT_BITMAP ? On 04/14, Chao Yu wrote: > dump.f2fs -d 1 img > > ... > checksum [0x829fb462 : 2191504482] > nat_version_bitmap[0] [0x 0 : 0] > nat_version_bitmap[1] [0x 0 : 0] > nat_version_bitmap[2] [0x 0 : 0] > ... > nat_version_bitmap[463] [0x 0 : 0] > sit_version_bitmap[0] [0x 0 : 0] > sit_version_bitmap[1] [0x 0 : 0] > sit_version_bitmap[2] [0x 0 : 0] > sit_version_bitmap[3] [0x 0 : 0] > ... > sit_version_bitmap[47] [0x 0 : 0] > > Signed-off-by: Chao Yu <chao@kernel.org> > --- > fsck/mount.c | 31 ++++++++++++++++++++++++++++++- > 1 file changed, 30 insertions(+), 1 deletion(-) > > diff --git a/fsck/mount.c b/fsck/mount.c > index e7c4069..6648c69 100644 > --- a/fsck/mount.c > +++ b/fsck/mount.c > @@ -563,6 +563,33 @@ printout: > printf("\n"); > } > > +void print_chksum(struct f2fs_checkpoint *cp) > +{ > + unsigned int crc = le32_to_cpu(*(__le32 *)((unsigned char *)cp + > + get_cp(checksum_offset))); > + > + printf("%-30s" "\t\t[0x%8x : %u]\n", "checksum", crc, crc); > +} > + > +void print_version_bitmap(struct f2fs_sb_info *sbi) > +{ > + char str[30]; > + int i, j; > + > + for (i = NAT_BITMAP; i <= SIT_BITMAP; i++) { > + unsigned int *bitmap = __bitmap_ptr(sbi, i); > + unsigned int size = round_up(__bitmap_size(sbi, i), 4); > + > + for (j = 0; j < size; j++) { > + snprintf(str, 31, "%s[%d]", i == NAT_BITMAP ? > + "nat_version_bitmap" : > + "sit_version_bitmap", j); > + printf("%-30s" "\t\t[0x%8x : %u]\n", str, > + bitmap[i], bitmap[i]); > + } > + } > +} > + > void print_ckpt_info(struct f2fs_sb_info *sbi) > { > struct f2fs_checkpoint *cp = F2FS_CKPT(sbi); > @@ -618,7 +645,9 @@ printout: > DISP_u32(cp, checksum_offset); > DISP_u64(cp, elapsed_time); > > - DISP_u32(cp, sit_nat_version_bitmap[0]); > + print_chksum(cp); > + print_version_bitmap(sbi); > + > printf("\n\n"); > } > > -- > 2.49.0
diff --git a/fsck/mount.c b/fsck/mount.c index e7c4069..6648c69 100644 --- a/fsck/mount.c +++ b/fsck/mount.c @@ -563,6 +563,33 @@ printout: printf("\n"); } +void print_chksum(struct f2fs_checkpoint *cp) +{ + unsigned int crc = le32_to_cpu(*(__le32 *)((unsigned char *)cp + + get_cp(checksum_offset))); + + printf("%-30s" "\t\t[0x%8x : %u]\n", "checksum", crc, crc); +} + +void print_version_bitmap(struct f2fs_sb_info *sbi) +{ + char str[30]; + int i, j; + + for (i = NAT_BITMAP; i <= SIT_BITMAP; i++) { + unsigned int *bitmap = __bitmap_ptr(sbi, i); + unsigned int size = round_up(__bitmap_size(sbi, i), 4); + + for (j = 0; j < size; j++) { + snprintf(str, 31, "%s[%d]", i == NAT_BITMAP ? + "nat_version_bitmap" : + "sit_version_bitmap", j); + printf("%-30s" "\t\t[0x%8x : %u]\n", str, + bitmap[i], bitmap[i]); + } + } +} + void print_ckpt_info(struct f2fs_sb_info *sbi) { struct f2fs_checkpoint *cp = F2FS_CKPT(sbi); @@ -618,7 +645,9 @@ printout: DISP_u32(cp, checksum_offset); DISP_u64(cp, elapsed_time); - DISP_u32(cp, sit_nat_version_bitmap[0]); + print_chksum(cp); + print_version_bitmap(sbi); + printf("\n\n"); }
dump.f2fs -d 1 img ... checksum [0x829fb462 : 2191504482] nat_version_bitmap[0] [0x 0 : 0] nat_version_bitmap[1] [0x 0 : 0] nat_version_bitmap[2] [0x 0 : 0] ... nat_version_bitmap[463] [0x 0 : 0] sit_version_bitmap[0] [0x 0 : 0] sit_version_bitmap[1] [0x 0 : 0] sit_version_bitmap[2] [0x 0 : 0] sit_version_bitmap[3] [0x 0 : 0] ... sit_version_bitmap[47] [0x 0 : 0] Signed-off-by: Chao Yu <chao@kernel.org> --- fsck/mount.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-)