mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #35323 -- Prevented file_move_safe() from trying to overwrite existing file when allow_overwrite is False.
This commit is contained in:
		
				
					committed by
					
						 Mariusz Felisiak
						Mariusz Felisiak
					
				
			
			
				
	
			
			
			
						parent
						
							b6e2b83901
						
					
				
				
					commit
					07c8d979ae
				
			| @@ -32,13 +32,12 @@ def file_move_safe( | ||||
|     except OSError: | ||||
|         pass | ||||
|  | ||||
|     try: | ||||
|         if not allow_overwrite and os.access(new_file_name, os.F_OK): | ||||
|             raise FileExistsError( | ||||
|                 "Destination file %s exists and allow_overwrite is False." | ||||
|                 % new_file_name | ||||
|             ) | ||||
|     if not allow_overwrite and os.access(new_file_name, os.F_OK): | ||||
|         raise FileExistsError( | ||||
|             f"Destination file {new_file_name} exists and allow_overwrite is False." | ||||
|         ) | ||||
|  | ||||
|     try: | ||||
|         os.rename(old_file_name, new_file_name) | ||||
|         return | ||||
|     except OSError: | ||||
|   | ||||
| @@ -426,9 +426,10 @@ class FileMoveSafeTests(unittest.TestCase): | ||||
|         handle_a, self.file_a = tempfile.mkstemp() | ||||
|         handle_b, self.file_b = tempfile.mkstemp() | ||||
|  | ||||
|         # file_move_safe() raises OSError if the destination file exists and | ||||
|         # allow_overwrite is False. | ||||
|         with self.assertRaises(FileExistsError): | ||||
|         # file_move_safe() raises FileExistsError if the destination file | ||||
|         # exists and allow_overwrite is False. | ||||
|         msg = r"Destination file .* exists and allow_overwrite is False\." | ||||
|         with self.assertRaisesRegex(FileExistsError, msg): | ||||
|             file_move_safe(self.file_a, self.file_b, allow_overwrite=False) | ||||
|  | ||||
|         # should allow it and continue on if allow_overwrite is True | ||||
|   | ||||
		Reference in New Issue
	
	Block a user