mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Issue #25913: Leading <~ is optional now in base64.a85decode() with adobe=True.
Patch by Swati Jaiswal.
This commit is contained in:
		
							parent
							
								
									1827eff030
								
							
						
					
					
						commit
						205e75bb62
					
				
					 3 changed files with 13 additions and 6 deletions
				
			
		| 
						 | 
					@ -367,10 +367,15 @@ def a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\v'):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    b = _bytes_from_decode_data(b)
 | 
					    b = _bytes_from_decode_data(b)
 | 
				
			||||||
    if adobe:
 | 
					    if adobe:
 | 
				
			||||||
        if not (b.startswith(_A85START) and b.endswith(_A85END)):
 | 
					        if not b.endswith(_A85END):
 | 
				
			||||||
            raise ValueError("Ascii85 encoded byte sequences must be bracketed "
 | 
					            raise ValueError(
 | 
				
			||||||
                             "by {!r} and {!r}".format(_A85START, _A85END))
 | 
					                "Ascii85 encoded byte sequences must end "
 | 
				
			||||||
        b = b[2:-2] # Strip off start/end markers
 | 
					                "with {!r}".format(_A85END)
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					        if b.startswith(_A85START):
 | 
				
			||||||
 | 
					            b = b[2:-2]  # Strip off start/end markers
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            b = b[:-2]
 | 
				
			||||||
    #
 | 
					    #
 | 
				
			||||||
    # We have to go through this stepwise, so as to ignore spaces and handle
 | 
					    # We have to go through this stepwise, so as to ignore spaces and handle
 | 
				
			||||||
    # special short sequences
 | 
					    # special short sequences
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -494,6 +494,7 @@ def test_a85decode(self):
 | 
				
			||||||
            eq(base64.a85decode(data, adobe=False), res, data)
 | 
					            eq(base64.a85decode(data, adobe=False), res, data)
 | 
				
			||||||
            eq(base64.a85decode(data.decode("ascii"), adobe=False), res, data)
 | 
					            eq(base64.a85decode(data.decode("ascii"), adobe=False), res, data)
 | 
				
			||||||
            eq(base64.a85decode(b'<~' + data + b'~>', adobe=True), res, data)
 | 
					            eq(base64.a85decode(b'<~' + data + b'~>', adobe=True), res, data)
 | 
				
			||||||
 | 
					            eq(base64.a85decode(data + b'~>', adobe=True), res, data)
 | 
				
			||||||
            eq(base64.a85decode('<~%s~>' % data.decode("ascii"), adobe=True),
 | 
					            eq(base64.a85decode('<~%s~>' % data.decode("ascii"), adobe=True),
 | 
				
			||||||
               res, data)
 | 
					               res, data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -584,8 +585,6 @@ def test_a85decode_errors(self):
 | 
				
			||||||
                                      b"malformed", adobe=True)
 | 
					                                      b"malformed", adobe=True)
 | 
				
			||||||
        self.assertRaises(ValueError, base64.a85decode,
 | 
					        self.assertRaises(ValueError, base64.a85decode,
 | 
				
			||||||
                                      b"<~still malformed", adobe=True)
 | 
					                                      b"<~still malformed", adobe=True)
 | 
				
			||||||
        self.assertRaises(ValueError, base64.a85decode,
 | 
					 | 
				
			||||||
                                      b"also malformed~>", adobe=True)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # With adobe=False (the default), Adobe framing markers are disallowed
 | 
					        # With adobe=False (the default), Adobe framing markers are disallowed
 | 
				
			||||||
        self.assertRaises(ValueError, base64.a85decode,
 | 
					        self.assertRaises(ValueError, base64.a85decode,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -76,6 +76,9 @@ Core and Builtins
 | 
				
			||||||
Library
 | 
					Library
 | 
				
			||||||
-------
 | 
					-------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Issue #25913: Leading ``<~`` is optional now in base64.a85decode() with
 | 
				
			||||||
 | 
					  adobe=True.  Patch by Swati Jaiswal.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Issue #26186: Remove an invalid type check in importlib.util.LazyLoader.
 | 
					- Issue #26186: Remove an invalid type check in importlib.util.LazyLoader.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- Issue #26367: importlib.__import__() raises SystemError like
 | 
					- Issue #26367: importlib.__import__() raises SystemError like
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue