Add trusted_file to disable metadata safeguards like PIL size limit.
This commit is contained in:
		
							parent
							
								
									0864572930
								
							
						
					
					
						commit
						ec1197d7ca
					
				
					 1 changed files with 12 additions and 3 deletions
				
			
		|  | @ -1231,12 +1231,17 @@ class Photo(ObjectBase): | |||
| 
 | ||||
|         self.duration = probe.audio.duration | ||||
| 
 | ||||
|     def _reload_image_metadata(self): | ||||
|     def _reload_image_metadata(self, trusted_file=False): | ||||
|         _max_pixels = PIL.Image.MAX_IMAGE_PIXELS | ||||
|         if trusted_file: | ||||
|             PIL.Image.MAX_IMAGE_PIXELS = None | ||||
|         try: | ||||
|             image = PIL.Image.open(self.real_path.absolute_path) | ||||
|         except (OSError, ValueError): | ||||
|             traceback.print_exc() | ||||
|             return | ||||
|         finally: | ||||
|             PIL.Image.MAX_IMAGE_PIXELS = _max_pixels | ||||
| 
 | ||||
|         (self.width, self.height) = image.size | ||||
|         image.close() | ||||
|  | @ -1260,9 +1265,13 @@ class Photo(ObjectBase): | |||
| 
 | ||||
|     @decorators.required_feature('photo.reload_metadata') | ||||
|     @worms.atomic | ||||
|     def reload_metadata(self, hash_kwargs=None) -> None: | ||||
|     def reload_metadata(self, hash_kwargs=None, trusted_file=False) -> None: | ||||
|         ''' | ||||
|         Load the file's height, width, etc as appropriate for this type of file. | ||||
| 
 | ||||
|         trusted_file: | ||||
|             If True, we can disable certain safeguards for file parsing, | ||||
|             depending on the file format. | ||||
|         ''' | ||||
|         log.info('Reloading metadata for %s.', self) | ||||
| 
 | ||||
|  | @ -1282,7 +1291,7 @@ class Photo(ObjectBase): | |||
|             pass | ||||
| 
 | ||||
|         elif self.simple_mimetype == 'image': | ||||
|             self._reload_image_metadata() | ||||
|             self._reload_image_metadata(trusted_file=trusted_file) | ||||
| 
 | ||||
|         elif self.simple_mimetype == 'video': | ||||
|             self._reload_video_metadata() | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue