• Eric Biggers's avatar
    vfs: require i_size <= SIZE_MAX in kernel_read_file() · 691115c3
    Eric Biggers authored
    On 32-bit systems, the buffer allocated by kernel_read_file() is too
    small if the file size is > SIZE_MAX, due to truncation to size_t.
    Fortunately, since the 'count' argument to kernel_read() is also
    truncated to size_t, only the allocated space is filled; then, -EIO is
    returned since 'pos != i_size' after the read loop.
    But this is not obvious and seems incidental.  We should be more
    explicit about this case.  So, fail early if i_size > SIZE_MAX.
    Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
    Signed-off-by: default avatarMimi Zohar <zohar@linux.ibm.com>
exec.c 47 KB