btrfs-progs: scrub: improved error handling in scrub_read_file

Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
David Sterba 2016-08-26 12:53:31 +02:00
parent 0ce97733fe
commit 5b16054958

View File

@ -481,7 +481,10 @@ static struct scrub_file_record **scrub_read_file(int fd, int report_errors)
again: again:
old_avail = avail - i; old_avail = avail - i;
BUG_ON(old_avail < 0); if (old_avail < 0) {
error("scrub record file corrupted near byte %d", i);
return ERR_PTR(-EINVAL);
}
if (old_avail) if (old_avail)
memmove(l, l + i, old_avail); memmove(l, l + i, old_avail);
avail = read(fd, l + old_avail, sizeof(l) - old_avail); avail = read(fd, l + old_avail, sizeof(l) - old_avail);
@ -650,7 +653,9 @@ skip:
} while (i < avail); } while (i < avail);
continue; continue;
} }
BUG(); error("internal error: unknown parser state %d near byte %d",
state, i);
return ERR_PTR(-EINVAL);
} }
goto again; goto again;
} }