|
@@ -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;
|