summaryrefslogtreecommitdiffstats
path: root/disk-utils
diff options
context:
space:
mode:
authorRuediger Meier2018-01-23 16:59:25 +0100
committerKarel Zak2018-01-24 12:53:34 +0100
commit68ac426949170bb3802a6d610f366f24aa0bb734 (patch)
treee3a7d8a6d4915a52fda5b255ebeddfaa2aefee9f /disk-utils
parenttests: rewrite fsck-bad-header (diff)
downloadkernel-qcow2-util-linux-68ac426949170bb3802a6d610f366f24aa0bb734.tar.gz
kernel-qcow2-util-linux-68ac426949170bb3802a6d610f366f24aa0bb734.tar.xz
kernel-qcow2-util-linux-68ac426949170bb3802a6d610f366f24aa0bb734.zip
fsck.cramfs: fix error message
errno is invalid in case that we just read(3) too short. Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Diffstat (limited to 'disk-utils')
-rw-r--r--disk-utils/fsck.cramfs.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/disk-utils/fsck.cramfs.c b/disk-utils/fsck.cramfs.c
index 820816b14..2a4f75a8c 100644
--- a/disk-utils/fsck.cramfs.c
+++ b/disk-utils/fsck.cramfs.c
@@ -226,10 +226,15 @@ static void test_crc(int start)
mmap(NULL, super.size, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (buf != MAP_FAILED) {
+ ssize_t tmp;
if (lseek(fd, 0, SEEK_SET) == (off_t) -1)
err(FSCK_EX_ERROR, _("seek on %s failed"), filename);
- if (read(fd, buf, super.size) != (ssize_t) super.size)
+ tmp = read(fd, buf, super.size);
+ if (tmp < 0)
err(FSCK_EX_ERROR, _("cannot read %s"), filename);
+ if (tmp != (ssize_t) super.size)
+ errx(FSCK_EX_ERROR, _("failed to read %"PRIu32" bytes from file %s"),
+ super.size, filename);
}
}
if (buf != MAP_FAILED) {