mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Issue #29416: Prevent infinite loop in pathlib.Path.mkdir
This commit is contained in:
		
						commit
						1add96f1b6
					
				
					 3 changed files with 14 additions and 1 deletions
				
			
		|  | @ -1235,7 +1235,7 @@ def mkdir(self, mode=0o777, parents=False, exist_ok=False): | |||
|                 if not exist_ok or not self.is_dir(): | ||||
|                     raise | ||||
|             except OSError as e: | ||||
|                 if e.errno != ENOENT: | ||||
|                 if e.errno != ENOENT or self.parent == self: | ||||
|                     raise | ||||
|                 self.parent.mkdir(parents=True) | ||||
|                 self._accessor.mkdir(self, mode) | ||||
|  |  | |||
|  | @ -1776,6 +1776,17 @@ def test_mkdir_exist_ok_with_parent(self): | |||
|         self.assertTrue(p.exists()) | ||||
|         self.assertEqual(p.stat().st_ctime, st_ctime_first) | ||||
| 
 | ||||
|     @only_nt    # XXX: not sure how to test this on POSIX | ||||
|     def test_mkdir_with_unknown_drive(self): | ||||
|         for d in 'ZYXWVUTSRQPONMLKJIHGFEDCBA': | ||||
|             p = self.cls(d + ':\\') | ||||
|             if not p.is_dir(): | ||||
|                 break | ||||
|         else: | ||||
|             self.skipTest("cannot find a drive that doesn't exist") | ||||
|         with self.assertRaises(OSError): | ||||
|             (p / 'child' / 'path').mkdir(parents=True) | ||||
| 
 | ||||
|     def test_mkdir_with_child_file(self): | ||||
|         p = self.cls(BASE, 'dirB', 'fileB') | ||||
|         self.assertTrue(p.exists()) | ||||
|  |  | |||
|  | @ -55,6 +55,8 @@ Extension Modules | |||
| Library | ||||
| ------- | ||||
| 
 | ||||
| - Issue #29416: Prevent infinite loop in pathlib.Path.mkdir | ||||
| 
 | ||||
| - Issue #29444: Fixed out-of-bounds buffer access in the group() method of | ||||
|   the match object.  Based on patch by WGH. | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Steve Dower
						Steve Dower