From: Nick Mathewson Date: Mon, 27 Mar 2017 08:40:15 +0000 (+0200) Subject: Check and cast st_size to size_t in storagedir code X-Git-Tag: tor-0.3.1.1-alpha~203 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1d617e3ed0a6c380d1bde9654a518c8a83d21db3;p=thirdparty%2Ftor.git 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. --- diff --git a/src/common/storagedir.c b/src/common/storagedir.c index b7d43ddf13..e28a66f693 100644 --- a/src/common/storagedir.c +++ b/src/common/storagedir.c @@ -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;