<pre style='margin:0'>
Zero King (l2dy) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/702bc42faeb877788fbaabca6161cb5cc4c50cc6">https://github.com/macports/macports-ports/commit/702bc42faeb877788fbaabca6161cb5cc4c50cc6</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 702bc42  p7zip: Fix CVE-2018-5996
</span>702bc42 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 702bc42faeb877788fbaabca6161cb5cc4c50cc6
</span>Author: Zero King <l2dy@macports.org>
AuthorDate: Wed Feb 21 02:24:22 2018 +0000

<span style='display:block; white-space:pre;color:#404040;'>    p7zip: Fix CVE-2018-5996
</span>---
 archivers/p7zip/Portfile                       |   5 +-
 archivers/p7zip/files/patch-CVE-2018-5996.diff | 221 +++++++++++++++++++++++++
 2 files changed, 224 insertions(+), 2 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/archivers/p7zip/Portfile b/archivers/p7zip/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 331eaca..87d6f4a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/archivers/p7zip/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/archivers/p7zip/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4,7 +4,7 @@ PortSystem      1.0
</span> 
 name            p7zip
 version         16.02
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision        2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision        3
</span> categories      archivers
 # contains unrar code which has a restrictive license
 license         LGPL-2.1+ Restrictive/Distributable
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -29,7 +29,8 @@ checksums       rmd160  03550898e45b3eabe4ea0df5ee3787bd8f179fd0 \
</span> variant universal {}
 
 patchfiles      patch-CVE-2016-9296.diff \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                patch-CVE-2017-17969.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                patch-CVE-2017-17969.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                patch-CVE-2018-5996.diff
</span> 
 configure {
     copy -force ${worksrcpath}/makefile.macosx_llvm_64bits ${worksrcpath}/makefile.machine
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/archivers/p7zip/files/patch-CVE-2018-5996.diff b/archivers/p7zip/files/patch-CVE-2018-5996.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..8e4033b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/archivers/p7zip/files/patch-CVE-2018-5996.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,221 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Robert Luberda <robert@debian.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sun, 28 Jan 2018 23:47:40 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: CVE-2018-5996
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Hopefully fix Memory Corruptions via RAR PPMd (CVE-2018-5996) by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+applying a few changes from 7Zip 18.00-beta.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Bug-Debian: https://bugs.debian.org/#888314
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CPP/7zip/Compress/Rar1Decoder.cpp | 13 +++++++++----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CPP/7zip/Compress/Rar1Decoder.h   |  1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CPP/7zip/Compress/Rar2Decoder.cpp | 10 +++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CPP/7zip/Compress/Rar2Decoder.h   |  1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CPP/7zip/Compress/Rar3Decoder.cpp | 23 ++++++++++++++++++++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CPP/7zip/Compress/Rar3Decoder.h   |  2 ++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 6 files changed, 42 insertions(+), 8 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CPP/7zip/Compress/Rar1Decoder.cpp CPP/7zip/Compress/Rar1Decoder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1aaedcc..68030c7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CPP/7zip/Compress/Rar1Decoder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CPP/7zip/Compress/Rar1Decoder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,7 +29,7 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-CDecoder::CDecoder(): m_IsSolid(false) { }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++CDecoder::CDecoder(): m_IsSolid(false), _errorMode(false) { }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void CDecoder::InitStructures()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -406,9 +406,14 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   InitData();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (!m_IsSolid)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _errorMode = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     InitStructures();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     InitHuff();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (_errorMode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return S_FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (m_UnpackSize > 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     GetFlagsBuf();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -477,9 +482,9 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   try { return CodeReal(inStream, outStream, inSize, outSize, progress); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  catch(const CInBufferException &e) { return e.ErrorCode; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  catch(const CLzOutWindowException &e) { return e.ErrorCode; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  catch(...) { return S_FALSE; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  catch(const CInBufferException &e) { _errorMode = true; return e.ErrorCode; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  catch(const CLzOutWindowException &e) { _errorMode = true; return e.ErrorCode; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  catch(...) { _errorMode = true; return S_FALSE; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CPP/7zip/Compress/Rar1Decoder.h CPP/7zip/Compress/Rar1Decoder.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 630f089..01b606b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CPP/7zip/Compress/Rar1Decoder.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CPP/7zip/Compress/Rar1Decoder.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -39,6 +39,7 @@ public:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Int64 m_UnpackSize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool m_IsSolid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  bool _errorMode;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   UInt32 ReadBits(int numBits);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   HRESULT CopyBlock(UInt32 distance, UInt32 len);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CPP/7zip/Compress/Rar2Decoder.cpp CPP/7zip/Compress/Rar2Decoder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b3f2b4b..0580c8d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CPP/7zip/Compress/Rar2Decoder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CPP/7zip/Compress/Rar2Decoder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -80,7 +80,8 @@ static const UInt32 kHistorySize = 1 << 20;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const UInt32 kWindowReservSize = (1 << 22) + 256;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CDecoder::CDecoder():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  m_IsSolid(false)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  m_IsSolid(false),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  m_TablesOK(false)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -100,6 +101,8 @@ UInt32 CDecoder::ReadBits(unsigned numBits) { return m_InBitStream.ReadBits(numB
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool CDecoder::ReadTables(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  m_TablesOK = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Byte levelLevels[kLevelTableSize];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Byte newLevels[kMaxTableSize];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   m_AudioMode = (ReadBits(1) == 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -170,6 +173,8 @@ bool CDecoder::ReadTables(void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   memcpy(m_LastLevels, newLevels, kMaxTableSize);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  m_TablesOK = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -344,6 +349,9 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return S_FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (!m_TablesOK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return S_FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   UInt64 startPos = m_OutWindowStream.GetProcessedSize();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   while (pos < unPackSize)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CPP/7zip/Compress/Rar2Decoder.h CPP/7zip/Compress/Rar2Decoder.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3a0535c..0e9005f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CPP/7zip/Compress/Rar2Decoder.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CPP/7zip/Compress/Rar2Decoder.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -139,6 +139,7 @@ class CDecoder :
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   UInt64 m_PackSize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool m_IsSolid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  bool m_TablesOK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   void InitStructures();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   UInt32 ReadBits(unsigned numBits);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CPP/7zip/Compress/Rar3Decoder.cpp CPP/7zip/Compress/Rar3Decoder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3bf2513..6cb8a6a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CPP/7zip/Compress/Rar3Decoder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CPP/7zip/Compress/Rar3Decoder.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -92,7 +92,8 @@ CDecoder::CDecoder():
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   _writtenFileSize(0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   _vmData(0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   _vmCode(0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  m_IsSolid(false)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  m_IsSolid(false),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  _errorMode(false)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   Ppmd7_Construct(&_ppmd);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -545,6 +546,9 @@ HRESULT CDecoder::ReadTables(bool &keepDecompressing)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return InitPPM();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  TablesRead = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  TablesOK = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   _lzMode = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   PrevAlignBits = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   PrevAlignCount = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -606,6 +610,9 @@ HRESULT CDecoder::ReadTables(bool &keepDecompressing)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (InputEofError())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return S_FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   TablesRead = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // original code has check here:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -623,6 +630,9 @@ HRESULT CDecoder::ReadTables(bool &keepDecompressing)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   RIF(m_LenDecoder.Build(&newLevels[kMainTableSize + kDistTableSize + kAlignTableSize]));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   memcpy(m_LastLevels, newLevels, kTablesSizesSum);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  TablesOK = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return S_OK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -824,7 +834,12 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     PpmEscChar = 2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     PpmError = true;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     InitFilters();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    _errorMode = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (_errorMode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return S_FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (!m_IsSolid || !TablesRead)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     bool keepDecompressing;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -838,6 +853,8 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     bool keepDecompressing;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (_lzMode)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      if (!TablesOK)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return S_FALSE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       RINOK(DecodeLZ(keepDecompressing))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -901,8 +918,8 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     _unpackSize = outSize ? *outSize : (UInt64)(Int64)-1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return CodeReal(progress);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  catch(const CInBufferException &e)  { return e.ErrorCode; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  catch(...) { return S_FALSE; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  catch(const CInBufferException &e)  { _errorMode = true; return e.ErrorCode; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  catch(...) { _errorMode = true; return S_FALSE; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // CNewException is possible here. But probably CNewException is caused
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // by error in data stream.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CPP/7zip/Compress/Rar3Decoder.h CPP/7zip/Compress/Rar3Decoder.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c130cec..2f72d7d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CPP/7zip/Compress/Rar3Decoder.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CPP/7zip/Compress/Rar3Decoder.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -192,6 +192,7 @@ class CDecoder:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   UInt32 _lastFilter;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool m_IsSolid;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  bool _errorMode;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool _lzMode;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool _unsupportedFilter;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -200,6 +201,7 @@ class CDecoder:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   UInt32 PrevAlignCount;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   bool TablesRead;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  bool TablesOK;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   CPpmd7 _ppmd;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   int PpmEscChar;
</span></pre><pre style='margin:0'>

</pre>