|  | @@ -181,6 +181,7 @@ crypto_read_tagged_contents_from_file(const char *fname,
 | 
	
		
			
				|  |  |    char *content = NULL;
 | 
	
		
			
				|  |  |    struct stat st;
 | 
	
		
			
				|  |  |    ssize_t r = -1;
 | 
	
		
			
				|  |  | +  size_t st_size;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    *tag_out = NULL;
 | 
	
		
			
				|  |  |    st.st_size = 0;
 | 
	
	
		
			
				|  | @@ -189,6 +190,7 @@ crypto_read_tagged_contents_from_file(const char *fname,
 | 
	
		
			
				|  |  |      goto end;
 | 
	
		
			
				|  |  |    if (st.st_size < 32 || st.st_size > 32 + data_out_len)
 | 
	
		
			
				|  |  |      goto end;
 | 
	
		
			
				|  |  | +  st_size = (size_t)st.st_size;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    memcpy(prefix, content, 32);
 | 
	
		
			
				|  |  |    prefix[32] = 0;
 | 
	
	
		
			
				|  | @@ -205,12 +207,12 @@ crypto_read_tagged_contents_from_file(const char *fname,
 | 
	
		
			
				|  |  |    *tag_out = tor_strndup(prefix+5+strlen(typestring),
 | 
	
		
			
				|  |  |                           strlen(prefix)-8-strlen(typestring));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  memcpy(data_out, content+32, st.st_size-32);
 | 
	
		
			
				|  |  | -  r = st.st_size - 32;
 | 
	
		
			
				|  |  | +  memcpy(data_out, content+32, st_size-32);
 | 
	
		
			
				|  |  | +  r = st_size - 32;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |   end:
 | 
	
		
			
				|  |  |    if (content)
 | 
	
		
			
				|  |  | -    memwipe(content, 0, st.st_size);
 | 
	
		
			
				|  |  | +    memwipe(content, 0, st_size);
 | 
	
		
			
				|  |  |    tor_free(content);
 | 
	
		
			
				|  |  |    return r;
 | 
	
		
			
				|  |  |  }
 |