<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>