libpayload: Don't do unaligned accesses during LZMA decompression
Use memcpy to access a uint32_t that's inherently unaligned due to the layout of the LZMA header format. Built and booted on Daisy and saw a data abort go away. Built and booted into developer mode on Link and verified that bitmaps were decompressed/displayed correctly. Change-Id: Id3ae746c04d23bcb0345cb71797bfa219479cc8f Signed-off-by: Gabe Black <gabeblack@google.com> Reviewed-on: http://review.coreboot.org/2670 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
		
				
					committed by
					
						
						Ronald G. Minnich
					
				
			
			
				
	
			
			
			
						parent
						
							903f8e0330
						
					
				
				
					commit
					00e5da6f25
				
			@@ -26,7 +26,7 @@ unsigned long ulzma(const unsigned char * src, unsigned char * dst)
 | 
			
		||||
	unsigned char scratchpad[15980];
 | 
			
		||||
 | 
			
		||||
	memcpy(properties, src, LZMA_PROPERTIES_SIZE);
 | 
			
		||||
	outSize = *(UInt32 *)(src + LZMA_PROPERTIES_SIZE);
 | 
			
		||||
	memcpy(&outSize, src + LZMA_PROPERTIES_SIZE, sizeof(outSize));
 | 
			
		||||
	if (LzmaDecodeProperties(&state.Properties, properties, LZMA_PROPERTIES_SIZE) != LZMA_RESULT_OK) {
 | 
			
		||||
		printf("lzma: Incorrect stream properties.\n");
 | 
			
		||||
		return 0;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user