mirror of https://github.com/procxx/kepka.git
				
				
				
			
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
diff --git a/src/3rdparty/libwebp/src/dec/vp8l.c b/src/3rdparty/libwebp/src/dec/vp8l.c
 | 
						|
index ea0254d..953ff01 100644
 | 
						|
--- a/src/3rdparty/libwebp/src/dec/vp8l.c
 | 
						|
+++ b/src/3rdparty/libwebp/src/dec/vp8l.c
 | 
						|
@@ -12,7 +12,7 @@
 | 
						|
 // Authors: Vikas Arora (vikaas.arora@gmail.com)
 | 
						|
 //          Jyrki Alakuijala (jyrki@google.com)
 | 
						|
 
 | 
						|
-#include <stdio.h>
 | 
						|
+// Patch: Backport of a crash fix.
 | 
						|
 #include <stdlib.h>
 | 
						|
 #include "./alphai.h"
 | 
						|
 #include "./vp8li.h"
 | 
						|
@@ -740,6 +740,10 @@ static int DecodeAlphaData(VP8LDecoder* const dec, uint8_t* const data,
 | 
						|
   const int len_code_limit = NUM_LITERAL_CODES + NUM_LENGTH_CODES;
 | 
						|
   const int mask = hdr->huffman_mask_;
 | 
						|
   assert(htree_group != NULL);
 | 
						|
+
 | 
						|
+  // Patch: Backport of a crash fix.
 | 
						|
+  assert(pos < end);
 | 
						|
+
 | 
						|
   assert(last_row <= height);
 | 
						|
   assert(Is8bOptimizable(hdr));
 | 
						|
 
 | 
						|
@@ -830,6 +834,10 @@ static int DecodeImageData(VP8LDecoder* const dec, uint32_t* const data,
 | 
						|
       (hdr->color_cache_size_ > 0) ? &hdr->color_cache_ : NULL;
 | 
						|
   const int mask = hdr->huffman_mask_;
 | 
						|
   assert(htree_group != NULL);
 | 
						|
+
 | 
						|
+  // Patch: Backport of a crash fix.
 | 
						|
+  assert(src < src_end);
 | 
						|
+
 | 
						|
   assert(src_last <= src_end);
 | 
						|
 
 | 
						|
   while (!br->eos_ && src < src_last) {
 | 
						|
@@ -1294,6 +1302,11 @@ int VP8LDecodeAlphaImageStream(ALPHDecoder* const alph_dec, int last_row) {
 | 
						|
   assert(dec->action_ == READ_DATA);
 | 
						|
   assert(last_row <= dec->height_);
 | 
						|
 
 | 
						|
+  // Patch: Backport of a crash fix.
 | 
						|
+  if (dec->last_pixel_ == dec->width_ * dec->height_) {
 | 
						|
+    return 1; // done
 | 
						|
+  }
 | 
						|
+
 | 
						|
   // Decode (with special row processing).
 | 
						|
   return alph_dec->use_8b_decode ?
 | 
						|
       DecodeAlphaData(dec, (uint8_t*)dec->pixels_, dec->width_, dec->height_,
 |