1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-19 22:50:17 +03:00

fileio: add missing overflow checks to read_full_virtual_file()

given the source is trusted this is probably not a biggie, but let's
better be safe than sorry.
This commit is contained in:
Lennart Poettering 2021-03-17 18:48:01 +01:00
parent b235b03138
commit c5384931b7

View File

@ -404,10 +404,14 @@ int read_full_virtual_file(const char *filename, char **ret_contents, size_t *re
/* Be prepared for files from /proc which generally report a file size of 0. */
if (st.st_size > 0) {
if (st.st_size > SSIZE_MAX) /* safety check in case off_t is 64bit and size_t 32bit */
return -E2BIG;
size = st.st_size;
n_retries--;
} else
size = size * 2;
/* Double the buffer size (saturate in case of overflow) */
size = size > SSIZE_MAX / 2 ? SSIZE_MAX : size * 2;
if (size > READ_FULL_BYTES_MAX)
return -E2BIG;