avoid reading uninitialized memory in __map_file

The value of *size is not relevant in case of failure, but it's
better not to copy garbage from the stack into it.
(The compiler cannot see through the syscall, so optimization
was not affected by the unspecified value).
This commit is contained in:
Szabolcs Nagy 2015-09-23 20:22:33 +00:00 committed by Rich Felker
parent 4260dfe1ec
commit bd275378d3

View File

@ -11,9 +11,10 @@ const char unsigned *__map_file(const char *pathname, size_t *size)
const unsigned char *map = MAP_FAILED;
int fd = __sys_open(pathname, O_RDONLY|O_CLOEXEC|O_NONBLOCK);
if (fd < 0) return 0;
if (!__syscall(SYS_fstat, fd, &st))
if (!__syscall(SYS_fstat, fd, &st)) {
map = __mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
*size = st.st_size;
}
__syscall(SYS_close, fd);
*size = st.st_size;
return map == MAP_FAILED ? 0 : map;
}