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() |             self._test_mapping_file_plain() | ||||||
| 
 | 
 | ||||||
|     def _test_mapping_file_plain(self): |     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 = {} |         urt_wa = {} | ||||||
| 
 | 
 | ||||||
|         with self.open_mapping_file() as f: |         with self.open_mapping_file() as f: | ||||||
|             for line in f: |             for line in f: | ||||||
|                 if not line: |                 if not line: | ||||||
|                     break |                     break | ||||||
|                 data = line.split('#')[0].strip().split() |                 data = line.split('#')[0].split() | ||||||
|                 if len(data) != 2: |                 if len(data) != 2: | ||||||
|                     continue |                     continue | ||||||
| 
 | 
 | ||||||
|                 csetval = eval(data[0]) |                 if data[0][:2] != '0x': | ||||||
|                 if csetval <= 0x7F: |                     self.fail(f"Invalid line: {line!r}") | ||||||
|                     csetch = bytes([csetval & 0xff]) |                 csetch = bytes.fromhex(data[0][2:]) | ||||||
|                 elif csetval >= 0x1000000: |                 if len(csetch) == 1 and 0x80 <= csetch[0]: | ||||||
|                     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: |  | ||||||
|                     continue |                     continue | ||||||
| 
 | 
 | ||||||
|                 unich = unichrs(data[1]) |                 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