Blame SOURCES/edk2-BaseTools-Fix-UEFI-and-Tiano-Decompression-logic-iss.patch

cc9195
From 115cf260ac54a6793a184227d6ae6bfe3da74a56 Mon Sep 17 00:00:00 2001
cc9195
From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@redhat.com>
cc9195
Date: Wed, 9 Jan 2019 17:10:05 +0100
cc9195
Subject: [PATCH 1/4] BaseTools: Fix UEFI and Tiano Decompression logic issue
cc9195
MIME-Version: 1.0
cc9195
Content-Type: text/plain; charset=UTF-8
cc9195
Content-Transfer-Encoding: 8bit
cc9195
cc9195
Message-id: <20190109161007.3471-2-philmd@redhat.com>
cc9195
Patchwork-id: 83924
cc9195
O-Subject:  [RHEL8 edk2 PATCH 1/3] BaseTools: Fix UEFI and Tiano Decompression
cc9195
	logic issue
cc9195
Bugzilla: 1662184
cc9195
Acked-by: Laszlo Ersek <lersek@redhat.com>
cc9195
Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
cc9195
cc9195
From: Liming Gao <liming.gao@intel.com>
cc9195
cc9195
https://bugzilla.tianocore.org/show_bug.cgi?id=1317
cc9195
cc9195
This is a regression issue caused by 041d89bc0f0119df37a5fce1d0f16495ff905089.
cc9195
In Decode() function, once mOutBuf is fully filled, Decode() should return.
cc9195
Current logic misses the checker of mOutBuf after while() loop.
cc9195
cc9195
Contributed-under: TianoCore Contribution Agreement 1.1
cc9195
Signed-off-by: Liming Gao <liming.gao@intel.com>
cc9195
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
cc9195
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
cc9195
(cherry picked from commit 5e45a1fdcfbf9b2b389122eb97475148594625f8)
cc9195
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
cc9195
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
cc9195
---
cc9195
 BaseTools/Source/C/Common/Decompress.c           | 6 ++++++
cc9195
 BaseTools/Source/C/TianoCompress/TianoCompress.c | 6 ++++++
cc9195
 2 files changed, 12 insertions(+)
cc9195
cc9195
diff --git a/BaseTools/Source/C/Common/Decompress.c b/BaseTools/Source/C/Common/Decompress.c
cc9195
index bdc10f5..af76f67 100644
cc9195
--- a/BaseTools/Source/C/Common/Decompress.c
cc9195
+++ b/BaseTools/Source/C/Common/Decompress.c
cc9195
@@ -662,6 +662,12 @@ Returns: (VOID)
cc9195
 
cc9195
         BytesRemain--;
cc9195
       }
cc9195
+      //
cc9195
+      // Once mOutBuf is fully filled, directly return
cc9195
+      //
cc9195
+      if (Sd->mOutBuf >= Sd->mOrigSize) {
cc9195
+        return ;
cc9195
+      }
cc9195
     }
cc9195
   }
cc9195
 
cc9195
diff --git a/BaseTools/Source/C/TianoCompress/TianoCompress.c b/BaseTools/Source/C/TianoCompress/TianoCompress.c
cc9195
index d07fd9e..369f7b3 100644
cc9195
--- a/BaseTools/Source/C/TianoCompress/TianoCompress.c
cc9195
+++ b/BaseTools/Source/C/TianoCompress/TianoCompress.c
cc9195
@@ -2649,6 +2649,12 @@ Returns: (VOID)
cc9195
 
cc9195
         BytesRemain--;
cc9195
       }
cc9195
+      //
cc9195
+      // Once mOutBuf is fully filled, directly return
cc9195
+      //
cc9195
+      if (Sd->mOutBuf >= Sd->mOrigSize) {
cc9195
+        goto Done ;
cc9195
+      }
cc9195
     }
cc9195
   }
cc9195
 
cc9195
-- 
cc9195
1.8.3.1
cc9195