Browse Source
			
			
			Fix attachment upload size check
			
				The min/max were reversed with the `add` and `sub` functions.
This caused the files to always be out of bounds in the check.
Fixes #4281
			
			
				pull/4282/head
			
			
		 
		
			
				
					
						 BlackDex
					
					2 years ago
						BlackDex
					
					2 years ago
					
				 
				
			 
		 
		
			
				
					
					No known key found for this signature in database
					
						
							GPG Key ID: 58C80A2AA6C765E1
						
					
				
			
		
		
		
	
		
			
				 1 changed files with 
4 additions and 
4 deletions
			 
			
		 
		
			
				- 
					
					
					 
					src/api/core/ciphers.rs
				
				
				
					
						
							
								
									
	
		
			
				
					|  |  | @ -1123,12 +1123,12 @@ async fn save_attachment( | 
			
		
	
		
			
				
					|  |  |  |         // the client. Upstream allows +/- 1 MiB deviation from this
 | 
			
		
	
		
			
				
					|  |  |  |         // size, but it's not clear when or why this is needed.
 | 
			
		
	
		
			
				
					|  |  |  |         const LEEWAY: i64 = 1024 * 1024; // 1 MiB
 | 
			
		
	
		
			
				
					|  |  |  |         let Some(min_size) = attachment.file_size.checked_add(LEEWAY) else { | 
			
		
	
		
			
				
					|  |  |  |             err!("Invalid attachment size min") | 
			
		
	
		
			
				
					|  |  |  |         }; | 
			
		
	
		
			
				
					|  |  |  |         let Some(max_size) = attachment.file_size.checked_sub(LEEWAY) else { | 
			
		
	
		
			
				
					|  |  |  |         let Some(max_size) = attachment.file_size.checked_add(LEEWAY) else { | 
			
		
	
		
			
				
					|  |  |  |             err!("Invalid attachment size max") | 
			
		
	
		
			
				
					|  |  |  |         }; | 
			
		
	
		
			
				
					|  |  |  |         let Some(min_size) = attachment.file_size.checked_sub(LEEWAY) else { | 
			
		
	
		
			
				
					|  |  |  |             err!("Invalid attachment size min") | 
			
		
	
		
			
				
					|  |  |  |         }; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |         if min_size <= size && size <= max_size { | 
			
		
	
		
			
				
					|  |  |  |             if size != attachment.file_size { | 
			
		
	
	
		
			
				
					|  |  | 
 |