* [PR PATCH] p7zip: fix CVE-2018-10115.
@ 2020-02-02 6:27 voidlinux-github
2020-02-02 6:45 ` [PR PATCH] [Updated] " voidlinux-github
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: voidlinux-github @ 2020-02-02 6:27 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 317 bytes --]
There is a new pull request by travankor against master on the void-packages repository
https://github.com/travankor/void-packages p7zip
https://github.com/void-linux/void-packages/pull/18732
p7zip: fix CVE-2018-10115.
None
A patch file from https://github.com/void-linux/void-packages/pull/18732.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-p7zip-18732.patch --]
[-- Type: text/x-diff, Size: 10609 bytes --]
From afd955dadacf16a09598346559adf5826478b50d Mon Sep 17 00:00:00 2001
From: travankor <travankor@tuta.io>
Date: Sat, 1 Feb 2020 23:22:28 -0700
Subject: [PATCH] p7zip: fix CVE-2018-10115.
---
srcpkgs/p7zip/patches/CVE-2018-10115.patch | 311 +++++++++++++++++++++
srcpkgs/p7zip/template | 4 +-
2 files changed, 313 insertions(+), 2 deletions(-)
create mode 100644 srcpkgs/p7zip/patches/CVE-2018-10115.patch
diff --git a/srcpkgs/p7zip/patches/CVE-2018-10115.patch b/srcpkgs/p7zip/patches/CVE-2018-10115.patch
new file mode 100644
index 00000000000..7d9c4bf81f0
--- /dev/null
+++ b/srcpkgs/p7zip/patches/CVE-2018-10115.patch
@@ -0,0 +1,311 @@
+From: Robert Luberda <robert@debian.org>
+Date: Tue, 29 May 2018 23:59:09 +0200
+Subject: Fix CVE-2018-10115
+
+Apply "patch" taken from https://landave.io/files/patch_7zip_CVE-2018-10115.txt
+
+
+Bugs-Debian: https://bugs.debian.org/897674
+---
+ CPP/7zip/Compress/Rar1Decoder.cpp | 16 +++++++++++-----
+ CPP/7zip/Compress/Rar1Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar2Decoder.cpp | 17 +++++++++++++----
+ CPP/7zip/Compress/Rar2Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar3Decoder.cpp | 19 +++++++++++++++----
+ CPP/7zip/Compress/Rar3Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar5Decoder.cpp | 8 ++++++++
+ CPP/7zip/Compress/Rar5Decoder.h | 1 +
+ 8 files changed, 54 insertions(+), 16 deletions(-)
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.cpp b/CPP/7zip/Compress/Rar1Decoder.cpp
+index 68030c7..8c890c8 100644
+--- a/CPP/7zip/Compress/Rar1Decoder.cpp
++++ b/CPP/7zip/Compress/Rar1Decoder.cpp
+@@ -29,7 +29,7 @@ public:
+ };
+ */
+
+-CDecoder::CDecoder(): m_IsSolid(false), _errorMode(false) { }
++CDecoder::CDecoder(): _isSolid(false), _solidAllowed(false), _errorMode(false) { }
+
+ void CDecoder::InitStructures()
+ {
+@@ -345,7 +345,7 @@ void CDecoder::GetFlagsBuf()
+
+ void CDecoder::InitData()
+ {
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ AvrPlcB = AvrLn1 = AvrLn2 = AvrLn3 = NumHuf = Buf60 = 0;
+ AvrPlc = 0x3500;
+@@ -391,6 +391,11 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -398,13 +403,13 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ m_UnpackSize = (Int64)*outSize;
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+ InitData();
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _errorMode = false;
+ InitStructures();
+@@ -475,6 +480,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ }
+ if (m_UnpackSize < 0)
+ return S_FALSE;
++ _solidAllowed = true;
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -491,7 +497,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.h b/CPP/7zip/Compress/Rar1Decoder.h
+index 01b606b..8abb3a3 100644
+--- a/CPP/7zip/Compress/Rar1Decoder.h
++++ b/CPP/7zip/Compress/Rar1Decoder.h
+@@ -38,7 +38,8 @@ public:
+ UInt32 LastLength;
+
+ Int64 m_UnpackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ UInt32 ReadBits(int numBits);
+diff --git a/CPP/7zip/Compress/Rar2Decoder.cpp b/CPP/7zip/Compress/Rar2Decoder.cpp
+index 0580c8d..be8d842 100644
+--- a/CPP/7zip/Compress/Rar2Decoder.cpp
++++ b/CPP/7zip/Compress/Rar2Decoder.cpp
+@@ -80,7 +80,8 @@ static const UInt32 kHistorySize = 1 << 20;
+ static const UInt32 kWindowReservSize = (1 << 22) + 256;
+
+ CDecoder::CDecoder():
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ m_TablesOK(false)
+ {
+ }
+@@ -320,6 +321,10 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -330,12 +335,12 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ UInt64 pos = 0, unPackSize = *outSize;
+
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ InitStructures();
+ if (unPackSize == 0)
+@@ -343,6 +348,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (m_InBitStream.GetProcessedSize() + 2 <= m_PackSize) // test it: probably incorrect;
+ if (!ReadTables())
+ return S_FALSE;
++ _solidAllowed = true;
+ return S_OK;
+ }
+ if (!ReadTables())
+@@ -386,6 +392,9 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ if (!ReadLastTables())
+ return S_FALSE;
++
++ _solidAllowed = true;
++
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -402,7 +411,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar2Decoder.h b/CPP/7zip/Compress/Rar2Decoder.h
+index 0e9005f..370bce2 100644
+--- a/CPP/7zip/Compress/Rar2Decoder.h
++++ b/CPP/7zip/Compress/Rar2Decoder.h
+@@ -138,7 +138,8 @@ class CDecoder :
+ Byte m_LastLevels[kMaxTableSize];
+
+ UInt64 m_PackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool m_TablesOK;
+
+ void InitStructures();
+diff --git a/CPP/7zip/Compress/Rar3Decoder.cpp b/CPP/7zip/Compress/Rar3Decoder.cpp
+index 6cb8a6a..7b85833 100644
+--- a/CPP/7zip/Compress/Rar3Decoder.cpp
++++ b/CPP/7zip/Compress/Rar3Decoder.cpp
+@@ -92,7 +92,8 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _vmData(0),
+ _vmCode(0),
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ _errorMode(false)
+ {
+ Ppmd7_Construct(&_ppmd);
+@@ -821,7 +822,7 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ {
+ _writtenFileSize = 0;
+ _unsupportedFilter = false;
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _lzSize = 0;
+ _winPos = 0;
+@@ -840,12 +841,15 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (_errorMode)
+ return S_FALSE;
+
+- if (!m_IsSolid || !TablesRead)
++ if (!_isSolid || !TablesRead)
+ {
+ bool keepDecompressing;
+ RINOK(ReadTables(keepDecompressing));
+ if (!keepDecompressing)
++ {
++ _solidAllowed = true;
+ return S_OK;
++ }
+ }
+
+ for (;;)
+@@ -870,6 +874,9 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (!keepDecompressing)
+ break;
+ }
++
++ _solidAllowed = true;
++
+ RINOK(WriteBuf());
+ UInt64 packSize = m_InBitStream.BitDecoder.GetProcessedSize();
+ RINOK(progress->SetRatioInfo(&packSize, &_writtenFileSize));
+@@ -890,6 +897,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ if (!inSize)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!_vmData)
+ {
+ _vmData = (Byte *)::MidAlloc(kVmDataSizeMax + kVmCodeSizeMax);
+@@ -928,7 +939,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar3Decoder.h b/CPP/7zip/Compress/Rar3Decoder.h
+index 2f72d7d..32c8943 100644
+--- a/CPP/7zip/Compress/Rar3Decoder.h
++++ b/CPP/7zip/Compress/Rar3Decoder.h
+@@ -191,7 +191,8 @@ class CDecoder:
+ CRecordVector<CTempFilter *> _tempFilters;
+ UInt32 _lastFilter;
+
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ bool _lzMode;
+diff --git a/CPP/7zip/Compress/Rar5Decoder.cpp b/CPP/7zip/Compress/Rar5Decoder.cpp
+index dc8830f..a826d5a 100644
+--- a/CPP/7zip/Compress/Rar5Decoder.cpp
++++ b/CPP/7zip/Compress/Rar5Decoder.cpp
+@@ -72,6 +72,7 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _dictSizeLog(0),
+ _isSolid(false),
++ _solidAllowed(false),
+ _wasInit(false),
+ _inputBuf(NULL)
+ {
+@@ -801,7 +802,10 @@ HRESULT CDecoder::CodeReal()
+ */
+
+ if (res == S_OK)
++ {
++ _solidAllowed = true;
+ res = res2;
++ }
+
+ if (res == S_OK && _unpackSize_Defined && _writtenFileSize != _unpackSize)
+ return S_FALSE;
+@@ -821,6 +825,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ {
+ try
+ {
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (_dictSizeLog >= sizeof(size_t) * 8)
+ return E_NOTIMPL;
+
+diff --git a/CPP/7zip/Compress/Rar5Decoder.h b/CPP/7zip/Compress/Rar5Decoder.h
+index b0a4dd1..3db5018 100644
+--- a/CPP/7zip/Compress/Rar5Decoder.h
++++ b/CPP/7zip/Compress/Rar5Decoder.h
+@@ -271,6 +271,7 @@ class CDecoder:
+ Byte _dictSizeLog;
+ bool _tableWasFilled;
+ bool _isSolid;
++ bool _solidAllowed;
+ bool _wasInit;
+
+ UInt32 _reps[kNumReps];
diff --git a/srcpkgs/p7zip/template b/srcpkgs/p7zip/template
index 15c5f7cabba..7037569cc68 100644
--- a/srcpkgs/p7zip/template
+++ b/srcpkgs/p7zip/template
@@ -1,12 +1,12 @@
# Template file for 'p7zip'
pkgname=p7zip
version=16.02
-revision=4
+revision=5
wrksrc="${pkgname}_${version}"
hostmakedepends="yasm nasm"
short_desc="Command-line version of the 7zip compressed file archive"
homepage="http://p7zip.sourceforge.net/"
-license="LGPL-2.1"
+license="LGPL-2.1-or-later"
maintainer="Orphaned <orphan@voidlinux.org>"
distfiles="${SOURCEFORGE_SITE}/${pkgname}/${pkgname}_${version}_src_all.tar.bz2"
checksum=5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PR PATCH] [Updated] p7zip: fix CVE-2018-10115.
2020-02-02 6:27 [PR PATCH] p7zip: fix CVE-2018-10115 voidlinux-github
@ 2020-02-02 6:45 ` voidlinux-github
2020-02-02 7:02 ` voidlinux-github
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: voidlinux-github @ 2020-02-02 6:45 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 322 bytes --]
There is an updated pull request by travankor against master on the void-packages repository
https://github.com/travankor/void-packages p7zip
https://github.com/void-linux/void-packages/pull/18732
p7zip: fix CVE-2018-10115.
None
A patch file from https://github.com/void-linux/void-packages/pull/18732.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-p7zip-18732.patch --]
[-- Type: text/x-diff, Size: 10577 bytes --]
From bd3885760b775d89dc12a5c1ea4202a385d03d77 Mon Sep 17 00:00:00 2001
From: travankor <travankor@tuta.io>
Date: Sat, 1 Feb 2020 23:22:28 -0700
Subject: [PATCH] p7zip: fix CVE-2018-10115.
---
srcpkgs/p7zip/patches/CVE-2018-10115.patch | 311 +++++++++++++++++++++
srcpkgs/p7zip/template | 4 +-
2 files changed, 313 insertions(+), 2 deletions(-)
create mode 100644 srcpkgs/p7zip/patches/CVE-2018-10115.patch
diff --git a/srcpkgs/p7zip/patches/CVE-2018-10115.patch b/srcpkgs/p7zip/patches/CVE-2018-10115.patch
new file mode 100644
index 00000000000..1941ab469fa
--- /dev/null
+++ b/srcpkgs/p7zip/patches/CVE-2018-10115.patch
@@ -0,0 +1,311 @@
+From: Robert Luberda <robert@debian.org>
+Date: Tue, 29 May 2018 23:59:09 +0200
+Subject: Fix CVE-2018-10115
+
+Apply "patch" taken from https://landave.io/files/patch_7zip_CVE-2018-10115.txt
+
+
+Bugs-Debian: https://bugs.debian.org/897674
+---
+ CPP/7zip/Compress/Rar1Decoder.cpp | 16 +++++++++++-----
+ CPP/7zip/Compress/Rar1Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar2Decoder.cpp | 17 +++++++++++++----
+ CPP/7zip/Compress/Rar2Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar3Decoder.cpp | 19 +++++++++++++++----
+ CPP/7zip/Compress/Rar3Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar5Decoder.cpp | 8 ++++++++
+ CPP/7zip/Compress/Rar5Decoder.h | 1 +
+ 8 files changed, 54 insertions(+), 16 deletions(-)
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.cpp b/CPP/7zip/Compress/Rar1Decoder.cpp
+index 68030c7..8c890c8 100644
+--- CPP/7zip/Compress/Rar1Decoder.cpp
++++ CPP/7zip/Compress/Rar1Decoder.cpp
+@@ -29,7 +29,7 @@ public:
+ };
+ */
+
+-CDecoder::CDecoder(): m_IsSolid(false), _errorMode(false) { }
++CDecoder::CDecoder(): _isSolid(false), _solidAllowed(false), _errorMode(false) { }
+
+ void CDecoder::InitStructures()
+ {
+@@ -345,7 +345,7 @@ void CDecoder::GetFlagsBuf()
+
+ void CDecoder::InitData()
+ {
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ AvrPlcB = AvrLn1 = AvrLn2 = AvrLn3 = NumHuf = Buf60 = 0;
+ AvrPlc = 0x3500;
+@@ -391,6 +391,11 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -398,13 +403,13 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ m_UnpackSize = (Int64)*outSize;
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+ InitData();
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _errorMode = false;
+ InitStructures();
+@@ -475,6 +480,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ }
+ if (m_UnpackSize < 0)
+ return S_FALSE;
++ _solidAllowed = true;
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -491,7 +497,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.h b/CPP/7zip/Compress/Rar1Decoder.h
+index 01b606b..8abb3a3 100644
+--- CPP/7zip/Compress/Rar1Decoder.h
++++ CPP/7zip/Compress/Rar1Decoder.h
+@@ -38,7 +38,8 @@ public:
+ UInt32 LastLength;
+
+ Int64 m_UnpackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ UInt32 ReadBits(int numBits);
+diff --git a/CPP/7zip/Compress/Rar2Decoder.cpp b/CPP/7zip/Compress/Rar2Decoder.cpp
+index 0580c8d..be8d842 100644
+--- CPP/7zip/Compress/Rar2Decoder.cpp
++++ CPP/7zip/Compress/Rar2Decoder.cpp
+@@ -80,7 +80,8 @@ static const UInt32 kHistorySize = 1 << 20;
+ static const UInt32 kWindowReservSize = (1 << 22) + 256;
+
+ CDecoder::CDecoder():
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ m_TablesOK(false)
+ {
+ }
+@@ -320,6 +321,10 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -330,12 +335,12 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ UInt64 pos = 0, unPackSize = *outSize;
+
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ InitStructures();
+ if (unPackSize == 0)
+@@ -343,6 +348,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (m_InBitStream.GetProcessedSize() + 2 <= m_PackSize) // test it: probably incorrect;
+ if (!ReadTables())
+ return S_FALSE;
++ _solidAllowed = true;
+ return S_OK;
+ }
+ if (!ReadTables())
+@@ -386,6 +392,9 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ if (!ReadLastTables())
+ return S_FALSE;
++
++ _solidAllowed = true;
++
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -402,7 +411,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar2Decoder.h b/CPP/7zip/Compress/Rar2Decoder.h
+index 0e9005f..370bce2 100644
+--- CPP/7zip/Compress/Rar2Decoder.h
++++ CPP/7zip/Compress/Rar2Decoder.h
+@@ -138,7 +138,8 @@ class CDecoder :
+ Byte m_LastLevels[kMaxTableSize];
+
+ UInt64 m_PackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool m_TablesOK;
+
+ void InitStructures();
+diff --git a/CPP/7zip/Compress/Rar3Decoder.cpp b/CPP/7zip/Compress/Rar3Decoder.cpp
+index 6cb8a6a..7b85833 100644
+--- CPP/7zip/Compress/Rar3Decoder.cpp
++++ CPP/7zip/Compress/Rar3Decoder.cpp
+@@ -92,7 +92,8 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _vmData(0),
+ _vmCode(0),
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ _errorMode(false)
+ {
+ Ppmd7_Construct(&_ppmd);
+@@ -821,7 +822,7 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ {
+ _writtenFileSize = 0;
+ _unsupportedFilter = false;
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _lzSize = 0;
+ _winPos = 0;
+@@ -840,12 +841,15 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (_errorMode)
+ return S_FALSE;
+
+- if (!m_IsSolid || !TablesRead)
++ if (!_isSolid || !TablesRead)
+ {
+ bool keepDecompressing;
+ RINOK(ReadTables(keepDecompressing));
+ if (!keepDecompressing)
++ {
++ _solidAllowed = true;
+ return S_OK;
++ }
+ }
+
+ for (;;)
+@@ -870,6 +874,9 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (!keepDecompressing)
+ break;
+ }
++
++ _solidAllowed = true;
++
+ RINOK(WriteBuf());
+ UInt64 packSize = m_InBitStream.BitDecoder.GetProcessedSize();
+ RINOK(progress->SetRatioInfo(&packSize, &_writtenFileSize));
+@@ -890,6 +897,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ if (!inSize)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!_vmData)
+ {
+ _vmData = (Byte *)::MidAlloc(kVmDataSizeMax + kVmCodeSizeMax);
+@@ -928,7 +939,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar3Decoder.h b/CPP/7zip/Compress/Rar3Decoder.h
+index 2f72d7d..32c8943 100644
+--- CPP/7zip/Compress/Rar3Decoder.h
++++ CPP/7zip/Compress/Rar3Decoder.h
+@@ -191,7 +191,8 @@ class CDecoder:
+ CRecordVector<CTempFilter *> _tempFilters;
+ UInt32 _lastFilter;
+
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ bool _lzMode;
+diff --git a/CPP/7zip/Compress/Rar5Decoder.cpp b/CPP/7zip/Compress/Rar5Decoder.cpp
+index dc8830f..a826d5a 100644
+--- CPP/7zip/Compress/Rar5Decoder.cpp
++++ CPP/7zip/Compress/Rar5Decoder.cpp
+@@ -72,6 +72,7 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _dictSizeLog(0),
+ _isSolid(false),
++ _solidAllowed(false),
+ _wasInit(false),
+ _inputBuf(NULL)
+ {
+@@ -801,7 +802,10 @@ HRESULT CDecoder::CodeReal()
+ */
+
+ if (res == S_OK)
++ {
++ _solidAllowed = true;
+ res = res2;
++ }
+
+ if (res == S_OK && _unpackSize_Defined && _writtenFileSize != _unpackSize)
+ return S_FALSE;
+@@ -821,6 +825,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ {
+ try
+ {
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (_dictSizeLog >= sizeof(size_t) * 8)
+ return E_NOTIMPL;
+
+diff --git a/CPP/7zip/Compress/Rar5Decoder.h b/CPP/7zip/Compress/Rar5Decoder.h
+index b0a4dd1..3db5018 100644
+--- CPP/7zip/Compress/Rar5Decoder.h
++++ CPP/7zip/Compress/Rar5Decoder.h
+@@ -271,6 +271,7 @@ class CDecoder:
+ Byte _dictSizeLog;
+ bool _tableWasFilled;
+ bool _isSolid;
++ bool _solidAllowed;
+ bool _wasInit;
+
+ UInt32 _reps[kNumReps];
diff --git a/srcpkgs/p7zip/template b/srcpkgs/p7zip/template
index 15c5f7cabba..7037569cc68 100644
--- a/srcpkgs/p7zip/template
+++ b/srcpkgs/p7zip/template
@@ -1,12 +1,12 @@
# Template file for 'p7zip'
pkgname=p7zip
version=16.02
-revision=4
+revision=5
wrksrc="${pkgname}_${version}"
hostmakedepends="yasm nasm"
short_desc="Command-line version of the 7zip compressed file archive"
homepage="http://p7zip.sourceforge.net/"
-license="LGPL-2.1"
+license="LGPL-2.1-or-later"
maintainer="Orphaned <orphan@voidlinux.org>"
distfiles="${SOURCEFORGE_SITE}/${pkgname}/${pkgname}_${version}_src_all.tar.bz2"
checksum=5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PR PATCH] [Updated] p7zip: fix CVE-2018-10115.
2020-02-02 6:27 [PR PATCH] p7zip: fix CVE-2018-10115 voidlinux-github
2020-02-02 6:45 ` [PR PATCH] [Updated] " voidlinux-github
@ 2020-02-02 7:02 ` voidlinux-github
2020-02-02 7:36 ` voidlinux-github
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: voidlinux-github @ 2020-02-02 7:02 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 322 bytes --]
There is an updated pull request by travankor against master on the void-packages repository
https://github.com/travankor/void-packages p7zip
https://github.com/void-linux/void-packages/pull/18732
p7zip: fix CVE-2018-10115.
None
A patch file from https://github.com/void-linux/void-packages/pull/18732.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-p7zip-18732.patch --]
[-- Type: text/x-diff, Size: 10621 bytes --]
From 2af4605fedef55f9060c528fb01de3331df055d0 Mon Sep 17 00:00:00 2001
From: travankor <travankor@tuta.io>
Date: Sat, 1 Feb 2020 23:22:28 -0700
Subject: [PATCH] p7zip: fix CVE-2018-10115.
---
srcpkgs/p7zip/patches/CVE-2018-10115.patch | 311 +++++++++++++++++++++
srcpkgs/p7zip/template | 6 +-
2 files changed, 314 insertions(+), 3 deletions(-)
create mode 100644 srcpkgs/p7zip/patches/CVE-2018-10115.patch
diff --git a/srcpkgs/p7zip/patches/CVE-2018-10115.patch b/srcpkgs/p7zip/patches/CVE-2018-10115.patch
new file mode 100644
index 00000000000..1941ab469fa
--- /dev/null
+++ b/srcpkgs/p7zip/patches/CVE-2018-10115.patch
@@ -0,0 +1,311 @@
+From: Robert Luberda <robert@debian.org>
+Date: Tue, 29 May 2018 23:59:09 +0200
+Subject: Fix CVE-2018-10115
+
+Apply "patch" taken from https://landave.io/files/patch_7zip_CVE-2018-10115.txt
+
+
+Bugs-Debian: https://bugs.debian.org/897674
+---
+ CPP/7zip/Compress/Rar1Decoder.cpp | 16 +++++++++++-----
+ CPP/7zip/Compress/Rar1Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar2Decoder.cpp | 17 +++++++++++++----
+ CPP/7zip/Compress/Rar2Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar3Decoder.cpp | 19 +++++++++++++++----
+ CPP/7zip/Compress/Rar3Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar5Decoder.cpp | 8 ++++++++
+ CPP/7zip/Compress/Rar5Decoder.h | 1 +
+ 8 files changed, 54 insertions(+), 16 deletions(-)
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.cpp b/CPP/7zip/Compress/Rar1Decoder.cpp
+index 68030c7..8c890c8 100644
+--- CPP/7zip/Compress/Rar1Decoder.cpp
++++ CPP/7zip/Compress/Rar1Decoder.cpp
+@@ -29,7 +29,7 @@ public:
+ };
+ */
+
+-CDecoder::CDecoder(): m_IsSolid(false), _errorMode(false) { }
++CDecoder::CDecoder(): _isSolid(false), _solidAllowed(false), _errorMode(false) { }
+
+ void CDecoder::InitStructures()
+ {
+@@ -345,7 +345,7 @@ void CDecoder::GetFlagsBuf()
+
+ void CDecoder::InitData()
+ {
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ AvrPlcB = AvrLn1 = AvrLn2 = AvrLn3 = NumHuf = Buf60 = 0;
+ AvrPlc = 0x3500;
+@@ -391,6 +391,11 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -398,13 +403,13 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ m_UnpackSize = (Int64)*outSize;
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+ InitData();
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _errorMode = false;
+ InitStructures();
+@@ -475,6 +480,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ }
+ if (m_UnpackSize < 0)
+ return S_FALSE;
++ _solidAllowed = true;
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -491,7 +497,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.h b/CPP/7zip/Compress/Rar1Decoder.h
+index 01b606b..8abb3a3 100644
+--- CPP/7zip/Compress/Rar1Decoder.h
++++ CPP/7zip/Compress/Rar1Decoder.h
+@@ -38,7 +38,8 @@ public:
+ UInt32 LastLength;
+
+ Int64 m_UnpackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ UInt32 ReadBits(int numBits);
+diff --git a/CPP/7zip/Compress/Rar2Decoder.cpp b/CPP/7zip/Compress/Rar2Decoder.cpp
+index 0580c8d..be8d842 100644
+--- CPP/7zip/Compress/Rar2Decoder.cpp
++++ CPP/7zip/Compress/Rar2Decoder.cpp
+@@ -80,7 +80,8 @@ static const UInt32 kHistorySize = 1 << 20;
+ static const UInt32 kWindowReservSize = (1 << 22) + 256;
+
+ CDecoder::CDecoder():
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ m_TablesOK(false)
+ {
+ }
+@@ -320,6 +321,10 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -330,12 +335,12 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ UInt64 pos = 0, unPackSize = *outSize;
+
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ InitStructures();
+ if (unPackSize == 0)
+@@ -343,6 +348,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (m_InBitStream.GetProcessedSize() + 2 <= m_PackSize) // test it: probably incorrect;
+ if (!ReadTables())
+ return S_FALSE;
++ _solidAllowed = true;
+ return S_OK;
+ }
+ if (!ReadTables())
+@@ -386,6 +392,9 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ if (!ReadLastTables())
+ return S_FALSE;
++
++ _solidAllowed = true;
++
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -402,7 +411,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar2Decoder.h b/CPP/7zip/Compress/Rar2Decoder.h
+index 0e9005f..370bce2 100644
+--- CPP/7zip/Compress/Rar2Decoder.h
++++ CPP/7zip/Compress/Rar2Decoder.h
+@@ -138,7 +138,8 @@ class CDecoder :
+ Byte m_LastLevels[kMaxTableSize];
+
+ UInt64 m_PackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool m_TablesOK;
+
+ void InitStructures();
+diff --git a/CPP/7zip/Compress/Rar3Decoder.cpp b/CPP/7zip/Compress/Rar3Decoder.cpp
+index 6cb8a6a..7b85833 100644
+--- CPP/7zip/Compress/Rar3Decoder.cpp
++++ CPP/7zip/Compress/Rar3Decoder.cpp
+@@ -92,7 +92,8 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _vmData(0),
+ _vmCode(0),
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ _errorMode(false)
+ {
+ Ppmd7_Construct(&_ppmd);
+@@ -821,7 +822,7 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ {
+ _writtenFileSize = 0;
+ _unsupportedFilter = false;
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _lzSize = 0;
+ _winPos = 0;
+@@ -840,12 +841,15 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (_errorMode)
+ return S_FALSE;
+
+- if (!m_IsSolid || !TablesRead)
++ if (!_isSolid || !TablesRead)
+ {
+ bool keepDecompressing;
+ RINOK(ReadTables(keepDecompressing));
+ if (!keepDecompressing)
++ {
++ _solidAllowed = true;
+ return S_OK;
++ }
+ }
+
+ for (;;)
+@@ -870,6 +874,9 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (!keepDecompressing)
+ break;
+ }
++
++ _solidAllowed = true;
++
+ RINOK(WriteBuf());
+ UInt64 packSize = m_InBitStream.BitDecoder.GetProcessedSize();
+ RINOK(progress->SetRatioInfo(&packSize, &_writtenFileSize));
+@@ -890,6 +897,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ if (!inSize)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!_vmData)
+ {
+ _vmData = (Byte *)::MidAlloc(kVmDataSizeMax + kVmCodeSizeMax);
+@@ -928,7 +939,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar3Decoder.h b/CPP/7zip/Compress/Rar3Decoder.h
+index 2f72d7d..32c8943 100644
+--- CPP/7zip/Compress/Rar3Decoder.h
++++ CPP/7zip/Compress/Rar3Decoder.h
+@@ -191,7 +191,8 @@ class CDecoder:
+ CRecordVector<CTempFilter *> _tempFilters;
+ UInt32 _lastFilter;
+
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ bool _lzMode;
+diff --git a/CPP/7zip/Compress/Rar5Decoder.cpp b/CPP/7zip/Compress/Rar5Decoder.cpp
+index dc8830f..a826d5a 100644
+--- CPP/7zip/Compress/Rar5Decoder.cpp
++++ CPP/7zip/Compress/Rar5Decoder.cpp
+@@ -72,6 +72,7 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _dictSizeLog(0),
+ _isSolid(false),
++ _solidAllowed(false),
+ _wasInit(false),
+ _inputBuf(NULL)
+ {
+@@ -801,7 +802,10 @@ HRESULT CDecoder::CodeReal()
+ */
+
+ if (res == S_OK)
++ {
++ _solidAllowed = true;
+ res = res2;
++ }
+
+ if (res == S_OK && _unpackSize_Defined && _writtenFileSize != _unpackSize)
+ return S_FALSE;
+@@ -821,6 +825,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ {
+ try
+ {
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (_dictSizeLog >= sizeof(size_t) * 8)
+ return E_NOTIMPL;
+
+diff --git a/CPP/7zip/Compress/Rar5Decoder.h b/CPP/7zip/Compress/Rar5Decoder.h
+index b0a4dd1..3db5018 100644
+--- CPP/7zip/Compress/Rar5Decoder.h
++++ CPP/7zip/Compress/Rar5Decoder.h
+@@ -271,6 +271,7 @@ class CDecoder:
+ Byte _dictSizeLog;
+ bool _tableWasFilled;
+ bool _isSolid;
++ bool _solidAllowed;
+ bool _wasInit;
+
+ UInt32 _reps[kNumReps];
diff --git a/srcpkgs/p7zip/template b/srcpkgs/p7zip/template
index 15c5f7cabba..35a0a7acdf1 100644
--- a/srcpkgs/p7zip/template
+++ b/srcpkgs/p7zip/template
@@ -1,13 +1,13 @@
# Template file for 'p7zip'
pkgname=p7zip
version=16.02
-revision=4
+revision=5
wrksrc="${pkgname}_${version}"
hostmakedepends="yasm nasm"
short_desc="Command-line version of the 7zip compressed file archive"
-homepage="http://p7zip.sourceforge.net/"
-license="LGPL-2.1"
maintainer="Orphaned <orphan@voidlinux.org>"
+license="LGPL-2.1-or-later"
+homepage="http://p7zip.sourceforge.net/"
distfiles="${SOURCEFORGE_SITE}/${pkgname}/${pkgname}_${version}_src_all.tar.bz2"
checksum=5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PR PATCH] [Updated] p7zip: fix CVE-2018-10115.
2020-02-02 6:27 [PR PATCH] p7zip: fix CVE-2018-10115 voidlinux-github
2020-02-02 6:45 ` [PR PATCH] [Updated] " voidlinux-github
2020-02-02 7:02 ` voidlinux-github
@ 2020-02-02 7:36 ` voidlinux-github
2020-02-02 7:49 ` voidlinux-github
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: voidlinux-github @ 2020-02-02 7:36 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 322 bytes --]
There is an updated pull request by travankor against master on the void-packages repository
https://github.com/travankor/void-packages p7zip
https://github.com/void-linux/void-packages/pull/18732
p7zip: fix CVE-2018-10115.
None
A patch file from https://github.com/void-linux/void-packages/pull/18732.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-p7zip-18732.patch --]
[-- Type: text/x-diff, Size: 11231 bytes --]
From cc8ef4a7824a80337a364417a9e644e3a836f6b1 Mon Sep 17 00:00:00 2001
From: travankor <travankor@tuta.io>
Date: Sat, 1 Feb 2020 23:22:28 -0700
Subject: [PATCH] p7zip: fix CVE-2018-10115.
---
...2018-5996.patch => 20-CVE-2018-5996.patch} | 0
srcpkgs/p7zip/patches/30-CVE-2018-10115.patch | 311 ++++++++++++++++++
srcpkgs/p7zip/template | 8 +-
3 files changed, 315 insertions(+), 4 deletions(-)
rename srcpkgs/p7zip/patches/{CVE-2018-5996.patch => 20-CVE-2018-5996.patch} (100%)
create mode 100644 srcpkgs/p7zip/patches/30-CVE-2018-10115.patch
diff --git a/srcpkgs/p7zip/patches/CVE-2018-5996.patch b/srcpkgs/p7zip/patches/20-CVE-2018-5996.patch
similarity index 100%
rename from srcpkgs/p7zip/patches/CVE-2018-5996.patch
rename to srcpkgs/p7zip/patches/20-CVE-2018-5996.patch
diff --git a/srcpkgs/p7zip/patches/30-CVE-2018-10115.patch b/srcpkgs/p7zip/patches/30-CVE-2018-10115.patch
new file mode 100644
index 00000000000..1941ab469fa
--- /dev/null
+++ b/srcpkgs/p7zip/patches/30-CVE-2018-10115.patch
@@ -0,0 +1,311 @@
+From: Robert Luberda <robert@debian.org>
+Date: Tue, 29 May 2018 23:59:09 +0200
+Subject: Fix CVE-2018-10115
+
+Apply "patch" taken from https://landave.io/files/patch_7zip_CVE-2018-10115.txt
+
+
+Bugs-Debian: https://bugs.debian.org/897674
+---
+ CPP/7zip/Compress/Rar1Decoder.cpp | 16 +++++++++++-----
+ CPP/7zip/Compress/Rar1Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar2Decoder.cpp | 17 +++++++++++++----
+ CPP/7zip/Compress/Rar2Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar3Decoder.cpp | 19 +++++++++++++++----
+ CPP/7zip/Compress/Rar3Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar5Decoder.cpp | 8 ++++++++
+ CPP/7zip/Compress/Rar5Decoder.h | 1 +
+ 8 files changed, 54 insertions(+), 16 deletions(-)
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.cpp b/CPP/7zip/Compress/Rar1Decoder.cpp
+index 68030c7..8c890c8 100644
+--- CPP/7zip/Compress/Rar1Decoder.cpp
++++ CPP/7zip/Compress/Rar1Decoder.cpp
+@@ -29,7 +29,7 @@ public:
+ };
+ */
+
+-CDecoder::CDecoder(): m_IsSolid(false), _errorMode(false) { }
++CDecoder::CDecoder(): _isSolid(false), _solidAllowed(false), _errorMode(false) { }
+
+ void CDecoder::InitStructures()
+ {
+@@ -345,7 +345,7 @@ void CDecoder::GetFlagsBuf()
+
+ void CDecoder::InitData()
+ {
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ AvrPlcB = AvrLn1 = AvrLn2 = AvrLn3 = NumHuf = Buf60 = 0;
+ AvrPlc = 0x3500;
+@@ -391,6 +391,11 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -398,13 +403,13 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ m_UnpackSize = (Int64)*outSize;
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+ InitData();
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _errorMode = false;
+ InitStructures();
+@@ -475,6 +480,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ }
+ if (m_UnpackSize < 0)
+ return S_FALSE;
++ _solidAllowed = true;
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -491,7 +497,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.h b/CPP/7zip/Compress/Rar1Decoder.h
+index 01b606b..8abb3a3 100644
+--- CPP/7zip/Compress/Rar1Decoder.h
++++ CPP/7zip/Compress/Rar1Decoder.h
+@@ -38,7 +38,8 @@ public:
+ UInt32 LastLength;
+
+ Int64 m_UnpackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ UInt32 ReadBits(int numBits);
+diff --git a/CPP/7zip/Compress/Rar2Decoder.cpp b/CPP/7zip/Compress/Rar2Decoder.cpp
+index 0580c8d..be8d842 100644
+--- CPP/7zip/Compress/Rar2Decoder.cpp
++++ CPP/7zip/Compress/Rar2Decoder.cpp
+@@ -80,7 +80,8 @@ static const UInt32 kHistorySize = 1 << 20;
+ static const UInt32 kWindowReservSize = (1 << 22) + 256;
+
+ CDecoder::CDecoder():
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ m_TablesOK(false)
+ {
+ }
+@@ -320,6 +321,10 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -330,12 +335,12 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ UInt64 pos = 0, unPackSize = *outSize;
+
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ InitStructures();
+ if (unPackSize == 0)
+@@ -343,6 +348,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (m_InBitStream.GetProcessedSize() + 2 <= m_PackSize) // test it: probably incorrect;
+ if (!ReadTables())
+ return S_FALSE;
++ _solidAllowed = true;
+ return S_OK;
+ }
+ if (!ReadTables())
+@@ -386,6 +392,9 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ if (!ReadLastTables())
+ return S_FALSE;
++
++ _solidAllowed = true;
++
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -402,7 +411,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar2Decoder.h b/CPP/7zip/Compress/Rar2Decoder.h
+index 0e9005f..370bce2 100644
+--- CPP/7zip/Compress/Rar2Decoder.h
++++ CPP/7zip/Compress/Rar2Decoder.h
+@@ -138,7 +138,8 @@ class CDecoder :
+ Byte m_LastLevels[kMaxTableSize];
+
+ UInt64 m_PackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool m_TablesOK;
+
+ void InitStructures();
+diff --git a/CPP/7zip/Compress/Rar3Decoder.cpp b/CPP/7zip/Compress/Rar3Decoder.cpp
+index 6cb8a6a..7b85833 100644
+--- CPP/7zip/Compress/Rar3Decoder.cpp
++++ CPP/7zip/Compress/Rar3Decoder.cpp
+@@ -92,7 +92,8 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _vmData(0),
+ _vmCode(0),
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ _errorMode(false)
+ {
+ Ppmd7_Construct(&_ppmd);
+@@ -821,7 +822,7 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ {
+ _writtenFileSize = 0;
+ _unsupportedFilter = false;
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _lzSize = 0;
+ _winPos = 0;
+@@ -840,12 +841,15 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (_errorMode)
+ return S_FALSE;
+
+- if (!m_IsSolid || !TablesRead)
++ if (!_isSolid || !TablesRead)
+ {
+ bool keepDecompressing;
+ RINOK(ReadTables(keepDecompressing));
+ if (!keepDecompressing)
++ {
++ _solidAllowed = true;
+ return S_OK;
++ }
+ }
+
+ for (;;)
+@@ -870,6 +874,9 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (!keepDecompressing)
+ break;
+ }
++
++ _solidAllowed = true;
++
+ RINOK(WriteBuf());
+ UInt64 packSize = m_InBitStream.BitDecoder.GetProcessedSize();
+ RINOK(progress->SetRatioInfo(&packSize, &_writtenFileSize));
+@@ -890,6 +897,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ if (!inSize)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!_vmData)
+ {
+ _vmData = (Byte *)::MidAlloc(kVmDataSizeMax + kVmCodeSizeMax);
+@@ -928,7 +939,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar3Decoder.h b/CPP/7zip/Compress/Rar3Decoder.h
+index 2f72d7d..32c8943 100644
+--- CPP/7zip/Compress/Rar3Decoder.h
++++ CPP/7zip/Compress/Rar3Decoder.h
+@@ -191,7 +191,8 @@ class CDecoder:
+ CRecordVector<CTempFilter *> _tempFilters;
+ UInt32 _lastFilter;
+
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ bool _lzMode;
+diff --git a/CPP/7zip/Compress/Rar5Decoder.cpp b/CPP/7zip/Compress/Rar5Decoder.cpp
+index dc8830f..a826d5a 100644
+--- CPP/7zip/Compress/Rar5Decoder.cpp
++++ CPP/7zip/Compress/Rar5Decoder.cpp
+@@ -72,6 +72,7 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _dictSizeLog(0),
+ _isSolid(false),
++ _solidAllowed(false),
+ _wasInit(false),
+ _inputBuf(NULL)
+ {
+@@ -801,7 +802,10 @@ HRESULT CDecoder::CodeReal()
+ */
+
+ if (res == S_OK)
++ {
++ _solidAllowed = true;
+ res = res2;
++ }
+
+ if (res == S_OK && _unpackSize_Defined && _writtenFileSize != _unpackSize)
+ return S_FALSE;
+@@ -821,6 +825,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ {
+ try
+ {
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (_dictSizeLog >= sizeof(size_t) * 8)
+ return E_NOTIMPL;
+
+diff --git a/CPP/7zip/Compress/Rar5Decoder.h b/CPP/7zip/Compress/Rar5Decoder.h
+index b0a4dd1..3db5018 100644
+--- CPP/7zip/Compress/Rar5Decoder.h
++++ CPP/7zip/Compress/Rar5Decoder.h
+@@ -271,6 +271,7 @@ class CDecoder:
+ Byte _dictSizeLog;
+ bool _tableWasFilled;
+ bool _isSolid;
++ bool _solidAllowed;
+ bool _wasInit;
+
+ UInt32 _reps[kNumReps];
diff --git a/srcpkgs/p7zip/template b/srcpkgs/p7zip/template
index 15c5f7cabba..c170980083a 100644
--- a/srcpkgs/p7zip/template
+++ b/srcpkgs/p7zip/template
@@ -1,13 +1,13 @@
# Template file for 'p7zip'
pkgname=p7zip
version=16.02
-revision=4
+revision=5
wrksrc="${pkgname}_${version}"
hostmakedepends="yasm nasm"
short_desc="Command-line version of the 7zip compressed file archive"
-homepage="http://p7zip.sourceforge.net/"
-license="LGPL-2.1"
maintainer="Orphaned <orphan@voidlinux.org>"
+license="LGPL-2.1-or-later"
+homepage="http://p7zip.sourceforge.net/"
distfiles="${SOURCEFORGE_SITE}/${pkgname}/${pkgname}_${version}_src_all.tar.bz2"
checksum=5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f
@@ -35,7 +35,7 @@ do_install() {
p7zip-unrar_package() {
short_desc+=" - RAR support"
- license="unrar"
+ license="custom:freeware"
depends="${sourcepkg}-${version}_${revision}"
repository=nonfree
pkg_install() {
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PR PATCH] [Updated] p7zip: fix CVE-2018-10115.
2020-02-02 6:27 [PR PATCH] p7zip: fix CVE-2018-10115 voidlinux-github
` (2 preceding siblings ...)
2020-02-02 7:36 ` voidlinux-github
@ 2020-02-02 7:49 ` voidlinux-github
2020-02-02 7:52 ` voidlinux-github
2020-02-02 18:16 ` [PR PATCH] [Merged]: " voidlinux-github
5 siblings, 0 replies; 7+ messages in thread
From: voidlinux-github @ 2020-02-02 7:49 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 322 bytes --]
There is an updated pull request by travankor against master on the void-packages repository
https://github.com/travankor/void-packages p7zip
https://github.com/void-linux/void-packages/pull/18732
p7zip: fix CVE-2018-10115.
None
A patch file from https://github.com/void-linux/void-packages/pull/18732.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-p7zip-18732.patch --]
[-- Type: text/x-diff, Size: 11485 bytes --]
From 9a9a544a8a2f2de6fa20ea6fe5ed81348e0f6298 Mon Sep 17 00:00:00 2001
From: travankor <travankor@tuta.io>
Date: Sat, 1 Feb 2020 23:22:28 -0700
Subject: [PATCH] p7zip: fix CVE-2018-10115.
---
...2018-5996.patch => 20-CVE-2018-5996.patch} | 0
srcpkgs/p7zip/patches/30-CVE-2018-10115.patch | 311 ++++++++++++++++++
srcpkgs/p7zip/template | 12 +-
3 files changed, 316 insertions(+), 7 deletions(-)
rename srcpkgs/p7zip/patches/{CVE-2018-5996.patch => 20-CVE-2018-5996.patch} (100%)
create mode 100644 srcpkgs/p7zip/patches/30-CVE-2018-10115.patch
diff --git a/srcpkgs/p7zip/patches/CVE-2018-5996.patch b/srcpkgs/p7zip/patches/20-CVE-2018-5996.patch
similarity index 100%
rename from srcpkgs/p7zip/patches/CVE-2018-5996.patch
rename to srcpkgs/p7zip/patches/20-CVE-2018-5996.patch
diff --git a/srcpkgs/p7zip/patches/30-CVE-2018-10115.patch b/srcpkgs/p7zip/patches/30-CVE-2018-10115.patch
new file mode 100644
index 00000000000..1941ab469fa
--- /dev/null
+++ b/srcpkgs/p7zip/patches/30-CVE-2018-10115.patch
@@ -0,0 +1,311 @@
+From: Robert Luberda <robert@debian.org>
+Date: Tue, 29 May 2018 23:59:09 +0200
+Subject: Fix CVE-2018-10115
+
+Apply "patch" taken from https://landave.io/files/patch_7zip_CVE-2018-10115.txt
+
+
+Bugs-Debian: https://bugs.debian.org/897674
+---
+ CPP/7zip/Compress/Rar1Decoder.cpp | 16 +++++++++++-----
+ CPP/7zip/Compress/Rar1Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar2Decoder.cpp | 17 +++++++++++++----
+ CPP/7zip/Compress/Rar2Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar3Decoder.cpp | 19 +++++++++++++++----
+ CPP/7zip/Compress/Rar3Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar5Decoder.cpp | 8 ++++++++
+ CPP/7zip/Compress/Rar5Decoder.h | 1 +
+ 8 files changed, 54 insertions(+), 16 deletions(-)
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.cpp b/CPP/7zip/Compress/Rar1Decoder.cpp
+index 68030c7..8c890c8 100644
+--- CPP/7zip/Compress/Rar1Decoder.cpp
++++ CPP/7zip/Compress/Rar1Decoder.cpp
+@@ -29,7 +29,7 @@ public:
+ };
+ */
+
+-CDecoder::CDecoder(): m_IsSolid(false), _errorMode(false) { }
++CDecoder::CDecoder(): _isSolid(false), _solidAllowed(false), _errorMode(false) { }
+
+ void CDecoder::InitStructures()
+ {
+@@ -345,7 +345,7 @@ void CDecoder::GetFlagsBuf()
+
+ void CDecoder::InitData()
+ {
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ AvrPlcB = AvrLn1 = AvrLn2 = AvrLn3 = NumHuf = Buf60 = 0;
+ AvrPlc = 0x3500;
+@@ -391,6 +391,11 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -398,13 +403,13 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ m_UnpackSize = (Int64)*outSize;
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+ InitData();
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _errorMode = false;
+ InitStructures();
+@@ -475,6 +480,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ }
+ if (m_UnpackSize < 0)
+ return S_FALSE;
++ _solidAllowed = true;
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -491,7 +497,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.h b/CPP/7zip/Compress/Rar1Decoder.h
+index 01b606b..8abb3a3 100644
+--- CPP/7zip/Compress/Rar1Decoder.h
++++ CPP/7zip/Compress/Rar1Decoder.h
+@@ -38,7 +38,8 @@ public:
+ UInt32 LastLength;
+
+ Int64 m_UnpackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ UInt32 ReadBits(int numBits);
+diff --git a/CPP/7zip/Compress/Rar2Decoder.cpp b/CPP/7zip/Compress/Rar2Decoder.cpp
+index 0580c8d..be8d842 100644
+--- CPP/7zip/Compress/Rar2Decoder.cpp
++++ CPP/7zip/Compress/Rar2Decoder.cpp
+@@ -80,7 +80,8 @@ static const UInt32 kHistorySize = 1 << 20;
+ static const UInt32 kWindowReservSize = (1 << 22) + 256;
+
+ CDecoder::CDecoder():
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ m_TablesOK(false)
+ {
+ }
+@@ -320,6 +321,10 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -330,12 +335,12 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ UInt64 pos = 0, unPackSize = *outSize;
+
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ InitStructures();
+ if (unPackSize == 0)
+@@ -343,6 +348,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (m_InBitStream.GetProcessedSize() + 2 <= m_PackSize) // test it: probably incorrect;
+ if (!ReadTables())
+ return S_FALSE;
++ _solidAllowed = true;
+ return S_OK;
+ }
+ if (!ReadTables())
+@@ -386,6 +392,9 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ if (!ReadLastTables())
+ return S_FALSE;
++
++ _solidAllowed = true;
++
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -402,7 +411,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar2Decoder.h b/CPP/7zip/Compress/Rar2Decoder.h
+index 0e9005f..370bce2 100644
+--- CPP/7zip/Compress/Rar2Decoder.h
++++ CPP/7zip/Compress/Rar2Decoder.h
+@@ -138,7 +138,8 @@ class CDecoder :
+ Byte m_LastLevels[kMaxTableSize];
+
+ UInt64 m_PackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool m_TablesOK;
+
+ void InitStructures();
+diff --git a/CPP/7zip/Compress/Rar3Decoder.cpp b/CPP/7zip/Compress/Rar3Decoder.cpp
+index 6cb8a6a..7b85833 100644
+--- CPP/7zip/Compress/Rar3Decoder.cpp
++++ CPP/7zip/Compress/Rar3Decoder.cpp
+@@ -92,7 +92,8 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _vmData(0),
+ _vmCode(0),
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ _errorMode(false)
+ {
+ Ppmd7_Construct(&_ppmd);
+@@ -821,7 +822,7 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ {
+ _writtenFileSize = 0;
+ _unsupportedFilter = false;
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _lzSize = 0;
+ _winPos = 0;
+@@ -840,12 +841,15 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (_errorMode)
+ return S_FALSE;
+
+- if (!m_IsSolid || !TablesRead)
++ if (!_isSolid || !TablesRead)
+ {
+ bool keepDecompressing;
+ RINOK(ReadTables(keepDecompressing));
+ if (!keepDecompressing)
++ {
++ _solidAllowed = true;
+ return S_OK;
++ }
+ }
+
+ for (;;)
+@@ -870,6 +874,9 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (!keepDecompressing)
+ break;
+ }
++
++ _solidAllowed = true;
++
+ RINOK(WriteBuf());
+ UInt64 packSize = m_InBitStream.BitDecoder.GetProcessedSize();
+ RINOK(progress->SetRatioInfo(&packSize, &_writtenFileSize));
+@@ -890,6 +897,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ if (!inSize)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!_vmData)
+ {
+ _vmData = (Byte *)::MidAlloc(kVmDataSizeMax + kVmCodeSizeMax);
+@@ -928,7 +939,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar3Decoder.h b/CPP/7zip/Compress/Rar3Decoder.h
+index 2f72d7d..32c8943 100644
+--- CPP/7zip/Compress/Rar3Decoder.h
++++ CPP/7zip/Compress/Rar3Decoder.h
+@@ -191,7 +191,8 @@ class CDecoder:
+ CRecordVector<CTempFilter *> _tempFilters;
+ UInt32 _lastFilter;
+
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ bool _lzMode;
+diff --git a/CPP/7zip/Compress/Rar5Decoder.cpp b/CPP/7zip/Compress/Rar5Decoder.cpp
+index dc8830f..a826d5a 100644
+--- CPP/7zip/Compress/Rar5Decoder.cpp
++++ CPP/7zip/Compress/Rar5Decoder.cpp
+@@ -72,6 +72,7 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _dictSizeLog(0),
+ _isSolid(false),
++ _solidAllowed(false),
+ _wasInit(false),
+ _inputBuf(NULL)
+ {
+@@ -801,7 +802,10 @@ HRESULT CDecoder::CodeReal()
+ */
+
+ if (res == S_OK)
++ {
++ _solidAllowed = true;
+ res = res2;
++ }
+
+ if (res == S_OK && _unpackSize_Defined && _writtenFileSize != _unpackSize)
+ return S_FALSE;
+@@ -821,6 +825,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ {
+ try
+ {
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (_dictSizeLog >= sizeof(size_t) * 8)
+ return E_NOTIMPL;
+
+diff --git a/CPP/7zip/Compress/Rar5Decoder.h b/CPP/7zip/Compress/Rar5Decoder.h
+index b0a4dd1..3db5018 100644
+--- CPP/7zip/Compress/Rar5Decoder.h
++++ CPP/7zip/Compress/Rar5Decoder.h
+@@ -271,6 +271,7 @@ class CDecoder:
+ Byte _dictSizeLog;
+ bool _tableWasFilled;
+ bool _isSolid;
++ bool _solidAllowed;
+ bool _wasInit;
+
+ UInt32 _reps[kNumReps];
diff --git a/srcpkgs/p7zip/template b/srcpkgs/p7zip/template
index 15c5f7cabba..25bf132d92b 100644
--- a/srcpkgs/p7zip/template
+++ b/srcpkgs/p7zip/template
@@ -1,13 +1,13 @@
# Template file for 'p7zip'
pkgname=p7zip
version=16.02
-revision=4
+revision=5
wrksrc="${pkgname}_${version}"
hostmakedepends="yasm nasm"
short_desc="Command-line version of the 7zip compressed file archive"
-homepage="http://p7zip.sourceforge.net/"
-license="LGPL-2.1"
maintainer="Orphaned <orphan@voidlinux.org>"
+license="LGPL-2.1-or-later"
+homepage="http://p7zip.sourceforge.net/"
distfiles="${SOURCEFORGE_SITE}/${pkgname}/${pkgname}_${version}_src_all.tar.bz2"
checksum=5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f
@@ -35,13 +35,11 @@ do_install() {
p7zip-unrar_package() {
short_desc+=" - RAR support"
- license="unrar"
+ license="custom:freeware"
depends="${sourcepkg}-${version}_${revision}"
repository=nonfree
pkg_install() {
vmove usr/lib/p7zip/Codecs/Rar.so
- mkdir -p ${PKGDESTDIR}/usr/share/licenses/p7zip-unrar
- mv ${DESTDIR}/usr/share/doc/p7zip/DOC/License.txt \
- ${PKGDESTDIR}/usr/share/licenses/p7zip-unrar
+ vlicense DOC/unRarLicense.txt p7zip-unrar
}
}
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PR PATCH] [Updated] p7zip: fix CVE-2018-10115.
2020-02-02 6:27 [PR PATCH] p7zip: fix CVE-2018-10115 voidlinux-github
` (3 preceding siblings ...)
2020-02-02 7:49 ` voidlinux-github
@ 2020-02-02 7:52 ` voidlinux-github
2020-02-02 18:16 ` [PR PATCH] [Merged]: " voidlinux-github
5 siblings, 0 replies; 7+ messages in thread
From: voidlinux-github @ 2020-02-02 7:52 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 322 bytes --]
There is an updated pull request by travankor against master on the void-packages repository
https://github.com/travankor/void-packages p7zip
https://github.com/void-linux/void-packages/pull/18732
p7zip: fix CVE-2018-10115.
None
A patch file from https://github.com/void-linux/void-packages/pull/18732.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-p7zip-18732.patch --]
[-- Type: text/x-diff, Size: 11481 bytes --]
From 708d26578c62c8676346a7608dd8c6bccf25a701 Mon Sep 17 00:00:00 2001
From: travankor <travankor@tuta.io>
Date: Sat, 1 Feb 2020 23:22:28 -0700
Subject: [PATCH] p7zip: fix CVE-2018-10115.
---
...2018-5996.patch => 20-CVE-2018-5996.patch} | 0
srcpkgs/p7zip/patches/30-CVE-2018-10115.patch | 311 ++++++++++++++++++
srcpkgs/p7zip/template | 12 +-
3 files changed, 316 insertions(+), 7 deletions(-)
rename srcpkgs/p7zip/patches/{CVE-2018-5996.patch => 20-CVE-2018-5996.patch} (100%)
create mode 100644 srcpkgs/p7zip/patches/30-CVE-2018-10115.patch
diff --git a/srcpkgs/p7zip/patches/CVE-2018-5996.patch b/srcpkgs/p7zip/patches/20-CVE-2018-5996.patch
similarity index 100%
rename from srcpkgs/p7zip/patches/CVE-2018-5996.patch
rename to srcpkgs/p7zip/patches/20-CVE-2018-5996.patch
diff --git a/srcpkgs/p7zip/patches/30-CVE-2018-10115.patch b/srcpkgs/p7zip/patches/30-CVE-2018-10115.patch
new file mode 100644
index 00000000000..1941ab469fa
--- /dev/null
+++ b/srcpkgs/p7zip/patches/30-CVE-2018-10115.patch
@@ -0,0 +1,311 @@
+From: Robert Luberda <robert@debian.org>
+Date: Tue, 29 May 2018 23:59:09 +0200
+Subject: Fix CVE-2018-10115
+
+Apply "patch" taken from https://landave.io/files/patch_7zip_CVE-2018-10115.txt
+
+
+Bugs-Debian: https://bugs.debian.org/897674
+---
+ CPP/7zip/Compress/Rar1Decoder.cpp | 16 +++++++++++-----
+ CPP/7zip/Compress/Rar1Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar2Decoder.cpp | 17 +++++++++++++----
+ CPP/7zip/Compress/Rar2Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar3Decoder.cpp | 19 +++++++++++++++----
+ CPP/7zip/Compress/Rar3Decoder.h | 3 ++-
+ CPP/7zip/Compress/Rar5Decoder.cpp | 8 ++++++++
+ CPP/7zip/Compress/Rar5Decoder.h | 1 +
+ 8 files changed, 54 insertions(+), 16 deletions(-)
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.cpp b/CPP/7zip/Compress/Rar1Decoder.cpp
+index 68030c7..8c890c8 100644
+--- CPP/7zip/Compress/Rar1Decoder.cpp
++++ CPP/7zip/Compress/Rar1Decoder.cpp
+@@ -29,7 +29,7 @@ public:
+ };
+ */
+
+-CDecoder::CDecoder(): m_IsSolid(false), _errorMode(false) { }
++CDecoder::CDecoder(): _isSolid(false), _solidAllowed(false), _errorMode(false) { }
+
+ void CDecoder::InitStructures()
+ {
+@@ -345,7 +345,7 @@ void CDecoder::GetFlagsBuf()
+
+ void CDecoder::InitData()
+ {
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ AvrPlcB = AvrLn1 = AvrLn2 = AvrLn3 = NumHuf = Buf60 = 0;
+ AvrPlc = 0x3500;
+@@ -391,6 +391,11 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -398,13 +403,13 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ m_UnpackSize = (Int64)*outSize;
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+ InitData();
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _errorMode = false;
+ InitStructures();
+@@ -475,6 +480,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ }
+ if (m_UnpackSize < 0)
+ return S_FALSE;
++ _solidAllowed = true;
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -491,7 +497,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar1Decoder.h b/CPP/7zip/Compress/Rar1Decoder.h
+index 01b606b..8abb3a3 100644
+--- CPP/7zip/Compress/Rar1Decoder.h
++++ CPP/7zip/Compress/Rar1Decoder.h
+@@ -38,7 +38,8 @@ public:
+ UInt32 LastLength;
+
+ Int64 m_UnpackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ UInt32 ReadBits(int numBits);
+diff --git a/CPP/7zip/Compress/Rar2Decoder.cpp b/CPP/7zip/Compress/Rar2Decoder.cpp
+index 0580c8d..be8d842 100644
+--- CPP/7zip/Compress/Rar2Decoder.cpp
++++ CPP/7zip/Compress/Rar2Decoder.cpp
+@@ -80,7 +80,8 @@ static const UInt32 kHistorySize = 1 << 20;
+ static const UInt32 kWindowReservSize = (1 << 22) + 256;
+
+ CDecoder::CDecoder():
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ m_TablesOK(false)
+ {
+ }
+@@ -320,6 +321,10 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (inSize == NULL || outSize == NULL)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!m_OutWindowStream.Create(kHistorySize))
+ return E_OUTOFMEMORY;
+ if (!m_InBitStream.Create(1 << 20))
+@@ -330,12 +335,12 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ UInt64 pos = 0, unPackSize = *outSize;
+
+ m_OutWindowStream.SetStream(outStream);
+- m_OutWindowStream.Init(m_IsSolid);
++ m_OutWindowStream.Init(_isSolid);
+ m_InBitStream.SetStream(inStream);
+ m_InBitStream.Init();
+
+ // CCoderReleaser coderReleaser(this);
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ InitStructures();
+ if (unPackSize == 0)
+@@ -343,6 +348,7 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+ if (m_InBitStream.GetProcessedSize() + 2 <= m_PackSize) // test it: probably incorrect;
+ if (!ReadTables())
+ return S_FALSE;
++ _solidAllowed = true;
+ return S_OK;
+ }
+ if (!ReadTables())
+@@ -386,6 +392,9 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
+
+ if (!ReadLastTables())
+ return S_FALSE;
++
++ _solidAllowed = true;
++
+ return m_OutWindowStream.Flush();
+ }
+
+@@ -402,7 +411,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar2Decoder.h b/CPP/7zip/Compress/Rar2Decoder.h
+index 0e9005f..370bce2 100644
+--- CPP/7zip/Compress/Rar2Decoder.h
++++ CPP/7zip/Compress/Rar2Decoder.h
+@@ -138,7 +138,8 @@ class CDecoder :
+ Byte m_LastLevels[kMaxTableSize];
+
+ UInt64 m_PackSize;
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool m_TablesOK;
+
+ void InitStructures();
+diff --git a/CPP/7zip/Compress/Rar3Decoder.cpp b/CPP/7zip/Compress/Rar3Decoder.cpp
+index 6cb8a6a..7b85833 100644
+--- CPP/7zip/Compress/Rar3Decoder.cpp
++++ CPP/7zip/Compress/Rar3Decoder.cpp
+@@ -92,7 +92,8 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _vmData(0),
+ _vmCode(0),
+- m_IsSolid(false),
++ _isSolid(false),
++ _solidAllowed(false),
+ _errorMode(false)
+ {
+ Ppmd7_Construct(&_ppmd);
+@@ -821,7 +822,7 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ {
+ _writtenFileSize = 0;
+ _unsupportedFilter = false;
+- if (!m_IsSolid)
++ if (!_isSolid)
+ {
+ _lzSize = 0;
+ _winPos = 0;
+@@ -840,12 +841,15 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (_errorMode)
+ return S_FALSE;
+
+- if (!m_IsSolid || !TablesRead)
++ if (!_isSolid || !TablesRead)
+ {
+ bool keepDecompressing;
+ RINOK(ReadTables(keepDecompressing));
+ if (!keepDecompressing)
++ {
++ _solidAllowed = true;
+ return S_OK;
++ }
+ }
+
+ for (;;)
+@@ -870,6 +874,9 @@ HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
+ if (!keepDecompressing)
+ break;
+ }
++
++ _solidAllowed = true;
++
+ RINOK(WriteBuf());
+ UInt64 packSize = m_InBitStream.BitDecoder.GetProcessedSize();
+ RINOK(progress->SetRatioInfo(&packSize, &_writtenFileSize));
+@@ -890,6 +897,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ if (!inSize)
+ return E_INVALIDARG;
+
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (!_vmData)
+ {
+ _vmData = (Byte *)::MidAlloc(kVmDataSizeMax + kVmCodeSizeMax);
+@@ -928,7 +939,7 @@ STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
+ {
+ if (size < 1)
+ return E_INVALIDARG;
+- m_IsSolid = ((data[0] & 1) != 0);
++ _isSolid = ((data[0] & 1) != 0);
+ return S_OK;
+ }
+
+diff --git a/CPP/7zip/Compress/Rar3Decoder.h b/CPP/7zip/Compress/Rar3Decoder.h
+index 2f72d7d..32c8943 100644
+--- CPP/7zip/Compress/Rar3Decoder.h
++++ CPP/7zip/Compress/Rar3Decoder.h
+@@ -191,7 +191,8 @@ class CDecoder:
+ CRecordVector<CTempFilter *> _tempFilters;
+ UInt32 _lastFilter;
+
+- bool m_IsSolid;
++ bool _isSolid;
++ bool _solidAllowed;
+ bool _errorMode;
+
+ bool _lzMode;
+diff --git a/CPP/7zip/Compress/Rar5Decoder.cpp b/CPP/7zip/Compress/Rar5Decoder.cpp
+index dc8830f..a826d5a 100644
+--- CPP/7zip/Compress/Rar5Decoder.cpp
++++ CPP/7zip/Compress/Rar5Decoder.cpp
+@@ -72,6 +72,7 @@ CDecoder::CDecoder():
+ _writtenFileSize(0),
+ _dictSizeLog(0),
+ _isSolid(false),
++ _solidAllowed(false),
+ _wasInit(false),
+ _inputBuf(NULL)
+ {
+@@ -801,7 +802,10 @@ HRESULT CDecoder::CodeReal()
+ */
+
+ if (res == S_OK)
++ {
++ _solidAllowed = true;
+ res = res2;
++ }
+
+ if (res == S_OK && _unpackSize_Defined && _writtenFileSize != _unpackSize)
+ return S_FALSE;
+@@ -821,6 +825,10 @@ STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream
+ {
+ try
+ {
++ if (_isSolid && !_solidAllowed)
++ return S_FALSE;
++ _solidAllowed = false;
++
+ if (_dictSizeLog >= sizeof(size_t) * 8)
+ return E_NOTIMPL;
+
+diff --git a/CPP/7zip/Compress/Rar5Decoder.h b/CPP/7zip/Compress/Rar5Decoder.h
+index b0a4dd1..3db5018 100644
+--- CPP/7zip/Compress/Rar5Decoder.h
++++ CPP/7zip/Compress/Rar5Decoder.h
+@@ -271,6 +271,7 @@ class CDecoder:
+ Byte _dictSizeLog;
+ bool _tableWasFilled;
+ bool _isSolid;
++ bool _solidAllowed;
+ bool _wasInit;
+
+ UInt32 _reps[kNumReps];
diff --git a/srcpkgs/p7zip/template b/srcpkgs/p7zip/template
index 15c5f7cabba..54e901f5102 100644
--- a/srcpkgs/p7zip/template
+++ b/srcpkgs/p7zip/template
@@ -1,13 +1,13 @@
# Template file for 'p7zip'
pkgname=p7zip
version=16.02
-revision=4
+revision=5
wrksrc="${pkgname}_${version}"
hostmakedepends="yasm nasm"
short_desc="Command-line version of the 7zip compressed file archive"
-homepage="http://p7zip.sourceforge.net/"
-license="LGPL-2.1"
maintainer="Orphaned <orphan@voidlinux.org>"
+license="LGPL-2.1-or-later"
+homepage="http://p7zip.sourceforge.net/"
distfiles="${SOURCEFORGE_SITE}/${pkgname}/${pkgname}_${version}_src_all.tar.bz2"
checksum=5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f
@@ -35,13 +35,11 @@ do_install() {
p7zip-unrar_package() {
short_desc+=" - RAR support"
- license="unrar"
+ license="custom:freeware"
depends="${sourcepkg}-${version}_${revision}"
repository=nonfree
pkg_install() {
vmove usr/lib/p7zip/Codecs/Rar.so
- mkdir -p ${PKGDESTDIR}/usr/share/licenses/p7zip-unrar
- mv ${DESTDIR}/usr/share/doc/p7zip/DOC/License.txt \
- ${PKGDESTDIR}/usr/share/licenses/p7zip-unrar
+ vlicense DOC/unRarLicense.txt LICENSE
}
}
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PR PATCH] [Merged]: p7zip: fix CVE-2018-10115.
2020-02-02 6:27 [PR PATCH] p7zip: fix CVE-2018-10115 voidlinux-github
` (4 preceding siblings ...)
2020-02-02 7:52 ` voidlinux-github
@ 2020-02-02 18:16 ` voidlinux-github
5 siblings, 0 replies; 7+ messages in thread
From: voidlinux-github @ 2020-02-02 18:16 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 164 bytes --]
There's a merged pull request on the void-packages repository
p7zip: fix CVE-2018-10115.
https://github.com/void-linux/void-packages/pull/18732
Description:
None
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-02-02 18:16 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-02 6:27 [PR PATCH] p7zip: fix CVE-2018-10115 voidlinux-github
2020-02-02 6:45 ` [PR PATCH] [Updated] " voidlinux-github
2020-02-02 7:02 ` voidlinux-github
2020-02-02 7:36 ` voidlinux-github
2020-02-02 7:49 ` voidlinux-github
2020-02-02 7:52 ` voidlinux-github
2020-02-02 18:16 ` [PR PATCH] [Merged]: " voidlinux-github
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).