From bba220a068db1c2668fe33ddd618054e2947cb68 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 18 May 2018 15:44:32 -0400 Subject: fix --- lib/extent-map.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'lib/extent-map.c') diff --git a/lib/extent-map.c b/lib/extent-map.c index ab9cfb0..42071c6 100644 --- a/lib/extent-map.c +++ b/lib/extent-map.c @@ -25,7 +25,13 @@ int fiemap(int fd, uint32_t flags, int (*handle_extent)(struct fiemap_extent)) { if (ioctl(fd, FS_IOC_FIEMAP, fm) < 0) return -errno; - for (size_t i = 0; i < fm->fm_extent_count; i++) { + if (fm->fm_mapped_extents == 0) { + if (bytes_mapped != 0) + error(EXIT_FAILURE, 0, "FS_IOC_FIEMAP is misbehaving"); + return EXIT_SUCCESS; + } + + for (size_t i = 0; i < fm->fm_mapped_extents; i++) { int r = handle_extent(fm->fm_extents[i]); if (r) { free(fm); -- cgit v1.2.3