Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3202b8fa authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Check an edge case when read(2) returns 0"

parents 81839486 71e182bc
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -336,6 +336,9 @@ int WriteToPartition(const unsigned char* data, size_t len, const char* target)
                    printf("verify read error %s at %zu: %s\n",
                           partition, p, strerror(errno));
                    return -1;
                } else if (read_count == 0) {
                    printf("verify read reached unexpected EOF, %s at %zu\n", partition, p);
                    return -1;
                }
                if (static_cast<size_t>(read_count) < to_read) {
                    printf("short verify read %s at %zu: %zd %zu %s\n",
+5 −8
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@
#include <unistd.h>
#include <fcntl.h>

#include <android-base/file.h>

#include "fuse_sideload.h"

struct file_data {
@@ -41,15 +43,10 @@ static int read_block_file(void* cookie, uint32_t block, uint8_t* buffer, uint32
        return -EIO;
    }

    while (fetch_size > 0) {
        ssize_t r = TEMP_FAILURE_RETRY(read(fd->fd, buffer, fetch_size));
        if (r == -1) {
    if (!android::base::ReadFully(fd->fd, buffer, fetch_size)) {
        fprintf(stderr, "read on sdcard failed: %s\n", strerror(errno));
        return -EIO;
    }
        fetch_size -= r;
        buffer += r;
    }

    return 0;
}
+4 −0
Original line number Diff line number Diff line
@@ -151,6 +151,10 @@ static int read_all(int fd, uint8_t* data, size_t size) {
            failure_type = kFreadFailure;
            fprintf(stderr, "read failed: %s\n", strerror(errno));
            return -1;
        } else if (r == 0) {
            failure_type = kFreadFailure;
            fprintf(stderr, "read reached unexpected EOF.\n");
            return -1;
        }
        so_far += r;
    }