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