mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	bpo-41944: No longer call eval() on content received via HTTP in the CJK codec tests (GH-22566)
This commit is contained in:
		
							parent
							
								
									91e3339066
								
							
						
					
					
						commit
						2ef5caa58f
					
				
					 2 changed files with 9 additions and 14 deletions
				
			
		|  | @ -305,29 +305,23 @@ def test_mapping_file(self): | |||
|             self._test_mapping_file_plain() | ||||
| 
 | ||||
|     def _test_mapping_file_plain(self): | ||||
|         unichrs = lambda s: ''.join(map(chr, map(eval, s.split('+')))) | ||||
|         def unichrs(s): | ||||
|             return ''.join(chr(int(x, 16)) for x in s.split('+')) | ||||
| 
 | ||||
|         urt_wa = {} | ||||
| 
 | ||||
|         with self.open_mapping_file() as f: | ||||
|             for line in f: | ||||
|                 if not line: | ||||
|                     break | ||||
|                 data = line.split('#')[0].strip().split() | ||||
|                 data = line.split('#')[0].split() | ||||
|                 if len(data) != 2: | ||||
|                     continue | ||||
| 
 | ||||
|                 csetval = eval(data[0]) | ||||
|                 if csetval <= 0x7F: | ||||
|                     csetch = bytes([csetval & 0xff]) | ||||
|                 elif csetval >= 0x1000000: | ||||
|                     csetch = bytes([(csetval >> 24), ((csetval >> 16) & 0xff), | ||||
|                                     ((csetval >> 8) & 0xff), (csetval & 0xff)]) | ||||
|                 elif csetval >= 0x10000: | ||||
|                     csetch = bytes([(csetval >> 16), ((csetval >> 8) & 0xff), | ||||
|                                     (csetval & 0xff)]) | ||||
|                 elif csetval >= 0x100: | ||||
|                     csetch = bytes([(csetval >> 8), (csetval & 0xff)]) | ||||
|                 else: | ||||
|                 if data[0][:2] != '0x': | ||||
|                     self.fail(f"Invalid line: {line!r}") | ||||
|                 csetch = bytes.fromhex(data[0][2:]) | ||||
|                 if len(csetch) == 1 and 0x80 <= csetch[0]: | ||||
|                     continue | ||||
| 
 | ||||
|                 unich = unichrs(data[1]) | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| Tests for CJK codecs no longer call ``eval()`` on content received via HTTP. | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Serhiy Storchaka
						Serhiy Storchaka