avoid reading uninitialized memory in __map_file
authorSzabolcs Nagy <nsz@port70.net>
Wed, 23 Sep 2015 20:22:33 +0000 (20:22 +0000)
committerRich Felker <dalias@aerifal.cx>
Thu, 24 Sep 2015 06:33:46 +0000 (06:33 +0000)
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).

src/time/__map_file.c

index d06a58147273bd30ff1c5ee4c24dea0e0aecaf9f..b91eb8edb986438c75152d737e6f4734b8e04fb1 100644 (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;
 }