Check and cast st_size to size_t in storagedir code

This prevents an i386 compilation warning and fixes bug 21828. Bug not
in any released Tor.
This commit is contained in:
Nick Mathewson 2017-03-27 10:40:15 +02:00
parent 0895808023
commit 1d617e3ed0

View File

@ -205,8 +205,11 @@ storage_dir_read(storage_dir_t *d, const char *fname, int bin, size_t *sz_out)
tor_asprintf(&path, "%s/%s", d->directory, fname);
struct stat st;
char *contents = read_file_to_str(path, flags, &st);
if (contents && sz_out)
*sz_out = st.st_size;
if (contents && sz_out) {
// it fits in RAM, so we know its size is less than SIZE_MAX
tor_assert((uint64_t)st.st_size <= SIZE_MAX);
*sz_out = (size_t) st.st_size;
}
tor_free(path);
return (uint8_t *) contents;