From 4658dfc2bfddfde048c3e78073f4a38cded82afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Wojdy=C5=82a?= Date: Sat, 11 Apr 2020 14:00:26 +0200 Subject: [PATCH] [LibOS] Fix read/write return check in FS tests --- LibOS/shim/test/fs/common.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/LibOS/shim/test/fs/common.c b/LibOS/shim/test/fs/common.c index 74b27b95..9bdae453 100644 --- a/LibOS/shim/test/fs/common.c +++ b/LibOS/shim/test/fs/common.c @@ -32,11 +32,16 @@ void read_fd(const char* path, int fd, void* buffer, size_t size) { ssize_t ret = read(fd, buffer + offset, size); if (ret == -EINTR) continue; - if (ret <= 0) + if (ret < 0) fatal_error("Failed to read file %s: %s\n", path, strerror(errno)); + if (ret == 0) + break; size -= ret; offset += ret; } + + if (size != 0) + fatal_error("Failed to read file %s: EOF\n", path); } void seek_fd(const char* path, int fd, ssize_t offset, int mode) { @@ -65,7 +70,7 @@ void write_fd(const char* path, int fd, const void* buffer, size_t size) { ssize_t ret = write(fd, buffer + offset, size); if (ret == -EINTR) continue; - if (ret <= 0) + if (ret < 0) fatal_error("Failed to write file %s: %s\n", path, strerror(errno)); size -= ret; offset += ret;