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

Commit 852ae8d0 authored by Tianjie Xu's avatar Tianjie Xu Committed by android-build-merger
Browse files

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

am: 3202b8fa

Change-Id: I7d748b9f13c0f03f195f943cb3f5afa57c80296e
parents aad4cef0 3202b8fa
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;
    }