diff options
author | ryoon <ryoon@pkgsrc.org> | 2016-04-07 14:41:34 +0000 |
---|---|---|
committer | ryoon <ryoon@pkgsrc.org> | 2016-04-07 14:41:34 +0000 |
commit | 1c02627f8902f577f0d8a988d4a5fea46e1db6e7 (patch) | |
tree | 93d9bbe6a4709b818259e039f073d7bdfed31727 /archivers | |
parent | e14dcdac31c690723d1502dc156d1471f9f10d8e (diff) | |
download | pkgsrc-1c02627f8902f577f0d8a988d4a5fea46e1db6e7.tar.gz |
Update to 15.14
* Convert to use option framework
Changelog:
Version 15.14
=============
- patch #26 : Patch to correctly set permissions for docs that permits non-sudo deletion of docs
- patch #27 : Update Mac OS X LLVM 64bits Makefile
- patch #28 : p7zip version 15.09 fails to build on s390
- patch #29 : please fix incorrect fsf address
- patch #31 : p7zip 15.09 fails to build on mips
- bug : "7za a -p ..." was fixed
- bug #172 : Impossible to create archive with some unicode symbols in filename
- From Windows version of 7-Zip 15.13:
- The BUG in 15.13 in CAB code was fixed.
- From Windows version of 7-Zip 15.12:
- Some bugs were fixed.
- New localization: Yoruba.
- test_emul becomes test_lib (tests libraries)
- cross building added :
makefile.linux_cross_mipsel
- support for android 5+ (-fPIE -pie)
Version 15.12 (never published)
=============
- From Windows version of 7-Zip 15.12 :
- "There are no errors" string after "Test" operation inside archive.
- The bugs in LZMA SDK were fixed (but these bugs are not related directly to 7-Zip's code).
- From Windows version of 7-Zip 15.11 :
- Some bugs were fixed.
- 7-Zip 15.10 showed incorrect error message about missing volume for multivolume RAR archives.
- ..../LZHAM added
Version 15.10 beta
==================
- bug #147 Directory traversal through symlinks
Bug-Debian: https://bugs.debian.org/774660
Delay creation of symlinks to prevent arbitrary file writes (CVE-2015-1038)
Fix given by Ben Hutchings
- From Windows version of 7-zip 15.10 beta:
- The BUG in 9.21 - 15.09 was fixed:
7-Zip could ignore some parameters, specified for archive creation operation
for gzip and bzip2 formats in "Add to Archive" window and in command line
version (-m switch).
- Some bugs were fixed.
- extracting from solid wim archives worked incorrectly in some cases,
- Also there are some minor changes.
- 7-Zip can show the name of missing volume for multivolume RAR and VMDK archives.
- Some internal changes with 7-Zip Benchmark.
Diffstat (limited to 'archivers')
-rw-r--r-- | archivers/p7zip/Makefile | 33 | ||||
-rw-r--r-- | archivers/p7zip/PLIST | 7 | ||||
-rw-r--r-- | archivers/p7zip/distinfo | 13 | ||||
-rw-r--r-- | archivers/p7zip/options.mk | 27 | ||||
-rw-r--r-- | archivers/p7zip/patches/patch-CVE-2015-1038 | 281 | ||||
-rw-r--r-- | archivers/p7zip/patches/patch-ac | 14 |
6 files changed, 51 insertions, 324 deletions
diff --git a/archivers/p7zip/Makefile b/archivers/p7zip/Makefile index d3821d2e212..e26639ae146 100644 --- a/archivers/p7zip/Makefile +++ b/archivers/p7zip/Makefile @@ -1,8 +1,7 @@ -# $NetBSD: Makefile,v 1.60 2016/02/14 08:39:47 ryoon Exp $ +# $NetBSD: Makefile,v 1.61 2016/04/07 14:41:34 ryoon Exp $ -DISTNAME= p7zip_15.09_src_all -PKGNAME= p7zip-15.09 -PKGREVISION= 1 +DISTNAME= p7zip_15.14_src_all +PKGNAME= p7zip-15.14 CATEGORIES= archivers MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=p7zip/} EXTRACT_SUFX= .tar.bz2 @@ -18,26 +17,14 @@ MAKE_FILE= makefile MAKE_JOBS_SAFE= no # missing header when compiling sfx NO_CONFIGURE= yes PTHREAD_OPTS+= require -PLIST_VARS= dll -# compiles, but does not recognize any archives as supported -DYNAMIC_7Z?= NO -.if !empty(DYNAMIC_7Z:MYES) -BUILD_TARGET= all2 -PLIST.dll= yes -CFLAGS+= -fPIC -.endif +.include "options.mk" WRKSRC= ${WRKDIR}/${PKGNAME_NOREV:S/-/_/} GCC_REQD+= 3.0 -INSTALLATION_DIRS= bin ${PKGMANDIR}/man1 -.if !empty(DYNAMIC_7Z:MYES) -INSTALLATION_DIRS+= lib/7z -INSTALLATION_DIRS+= lib/7z/Codecs -INSTALLATION_DIRS+= lib/7z/Formats -.endif +INSTALLATION_DIRS+= bin ${PKGMANDIR}/man1 INSTALLATION_DIRS+= share/doc/p7zip INSTALLATION_DIRS+= share/doc/p7zip/commands INSTALLATION_DIRS+= share/doc/p7zip/switches @@ -58,17 +45,9 @@ CFLAGS+= -DBIG_ENDIAN CFLAGS+= -DLITTLE_ENDIAN .endif -do-install: +do-install: dynamic-7z-install ${INSTALL_PROGRAM} ${WRKSRC}/bin/7za ${DESTDIR}${PREFIX}/bin -.if !empty(DYNAMIC_7Z:MYES) - ${INSTALL_LIB} ${WRKSRC}/bin/7z.so ${DESTDIR}${PREFIX}/lib/ - ${INSTALL_PROGRAM} ${WRKSRC}/bin/7z ${DESTDIR}${PREFIX}/lib/7z - ln -f -s ${PREFIX}/lib/7z/7z ${DESTDIR}${PREFIX}/bin - ${INSTALL_LIB} ${WRKSRC}/bin/Codecs/* \ - ${DESTDIR}${PREFIX}/lib/7z/Codecs -.else ln -f -s 7za ${DESTDIR}${PREFIX}/bin/7z -.endif ${INSTALL_DATA} ${WRKSRC}/README \ ${DESTDIR}${PREFIX}/share/doc/p7zip ${INSTALL_DATA} ${WRKSRC}/DOC/MANUAL/cmdline/*.* \ diff --git a/archivers/p7zip/PLIST b/archivers/p7zip/PLIST index f385778944f..be4565a2650 100644 --- a/archivers/p7zip/PLIST +++ b/archivers/p7zip/PLIST @@ -1,9 +1,9 @@ -@comment $NetBSD: PLIST,v 1.20 2015/12/29 19:39:21 adam Exp $ +@comment $NetBSD: PLIST,v 1.21 2016/04/07 14:41:34 ryoon Exp $ bin/7z bin/7za ${PLIST.dll}lib/7z.so ${PLIST.dll}lib/7z/7z -${PLIST.dll}lib/7z/Codecs/Rar29.so +${PLIST.dll}lib/7z/Codecs/Rar.so man/man1/7z.1 man/man1/7za.1 man/man1/7zr.1 @@ -26,6 +26,8 @@ share/doc/p7zip/style.css share/doc/p7zip/switches/ar_exclude.htm share/doc/p7zip/switches/ar_include.htm share/doc/p7zip/switches/ar_no.htm +share/doc/p7zip/switches/bb.htm +share/doc/p7zip/switches/bs.htm share/doc/p7zip/switches/charset.htm share/doc/p7zip/switches/email.htm share/doc/p7zip/switches/exclude.htm @@ -52,6 +54,7 @@ share/doc/p7zip/switches/stdin.htm share/doc/p7zip/switches/stdout.htm share/doc/p7zip/switches/stl.htm share/doc/p7zip/switches/stop_switch.htm +share/doc/p7zip/switches/stx.htm share/doc/p7zip/switches/style.css share/doc/p7zip/switches/type.htm share/doc/p7zip/switches/update.htm diff --git a/archivers/p7zip/distinfo b/archivers/p7zip/distinfo index 9062239d2e7..2d7c8575a0e 100644 --- a/archivers/p7zip/distinfo +++ b/archivers/p7zip/distinfo @@ -1,11 +1,10 @@ -$NetBSD: distinfo,v 1.47 2016/02/24 13:03:04 wiz Exp $ +$NetBSD: distinfo,v 1.48 2016/04/07 14:41:34 ryoon Exp $ -SHA1 (p7zip_15.09_src_all.tar.bz2) = d5d21ac15e7c197f8af0366694ab9a301cfce972 -RMD160 (p7zip_15.09_src_all.tar.bz2) = f9ca03529644f43893f1f1b7ef6d864549e53022 -SHA512 (p7zip_15.09_src_all.tar.bz2) = 4f020b13632ef7a85aa8a98586b59bef2dde3c1cbebdbd17e01f1d09b2e13a56ecfe82546d7efc677c45df67456a71cfdb67826b53ebea4c0fb4878f20c2f6dd -Size (p7zip_15.09_src_all.tar.bz2) = 4048481 bytes +SHA1 (p7zip_15.14_src_all.tar.bz2) = 97f719c55e6f3b1134aff2a4b5ac3a6accb5492f +RMD160 (p7zip_15.14_src_all.tar.bz2) = 85278ca8dc47cce2d07d8582213bbd0380eb2992 +SHA512 (p7zip_15.14_src_all.tar.bz2) = 3053647cbcb3b8efd7f41b6bc122e984b999d31720f9b22387c52ccfe8a71d73899b1fb3a269854fd43bc1ca656c7d53457aca1cb5e2c90a2d0fb8f084bdebc5 +Size (p7zip_15.14_src_all.tar.bz2) = 4147609 bytes SHA1 (patch-CPP_Windows_DLL.cpp) = 12fb3f3cf4d32b8848f741dde6bcb0e56a9c6745 -SHA1 (patch-CVE-2015-1038) = 21d196e5c840597a17bba3e835c5adc3ecc77bb4 SHA1 (patch-aa) = 9c103fa831cc6ff099e3a604c763ff416f1b48ec SHA1 (patch-ab) = c680fb037b9ef5e19e4c8dc71dd710598277a61b -SHA1 (patch-ac) = a7afeded4aeb5ef230d006d1556ee601a6190063 +SHA1 (patch-ac) = 747d8ab9ba3b4069227efcfce9a4b26096e68b9b diff --git a/archivers/p7zip/options.mk b/archivers/p7zip/options.mk new file mode 100644 index 00000000000..f3a4e3df157 --- /dev/null +++ b/archivers/p7zip/options.mk @@ -0,0 +1,27 @@ +# $NetBSD: options.mk,v 1.1 2016/04/07 14:41:34 ryoon Exp $ + +PKG_OPTIONS_VAR= PKG_OPTIONS.p7zip +PKG_SUPPORTED_OPTIONS+= dll +PLIST_VARS+= dll + +.include "../../mk/bsd.options.mk" + +PHONY: dynamic-7z-install +.if !empty(PKG_OPTIONS:Mdll) +BUILD_TARGET= all2 +PLIST.dll= yes +CFLAGS+= -fPIC + +INSTALLATION_DIRS+= lib/7z +INSTALLATION_DIRS+= lib/7z/Codecs +INSTALLATION_DIRS+= lib/7z/Formats + +dynamic-7z-install: + ${INSTALL_LIB} ${WRKSRC}/bin/7z.so ${DESTDIR}${PREFIX}/lib/ + ${INSTALL_PROGRAM} ${WRKSRC}/bin/7z ${DESTDIR}${PREFIX}/lib/7z + ln -f -s ${PREFIX}/lib/7z/7z ${DESTDIR}${PREFIX}/bin + ${INSTALL_LIB} ${WRKSRC}/bin/Codecs/* \ + ${DESTDIR}${PREFIX}/lib/7z/Codecs +.else +dynamic-7z-install: +.endif diff --git a/archivers/p7zip/patches/patch-CVE-2015-1038 b/archivers/p7zip/patches/patch-CVE-2015-1038 deleted file mode 100644 index 85cb721a0ad..00000000000 --- a/archivers/p7zip/patches/patch-CVE-2015-1038 +++ /dev/null @@ -1,281 +0,0 @@ -$NetBSD: patch-CVE-2015-1038,v 1.2 2016/02/24 13:03:04 wiz Exp $ - -* A patch for CVE-2015-1038 - http://pkgs.fedoraproject.org/cgit/rpms/p7zip.git/plain/p7zip-15.09-CVE-2015-1038.patch - ---- CPP/7zip/UI/Agent/Agent.cpp.orig 2015-09-17 19:02:35.000000000 +0000 -+++ CPP/7zip/UI/Agent/Agent.cpp -@@ -1515,7 +1515,7 @@ STDMETHODIMP CAgentFolder::Extract(const - HRESULT result = _agentSpec->GetArchive()->Extract(&realIndices.Front(), - realIndices.Size(), testMode, extractCallback); - if (result == S_OK) -- result = extractCallbackSpec->SetDirsTimes(); -+ result = extractCallbackSpec->SetFinalAttribs(); - return result; - COM_TRY_END - } -$NetBSD: patch-CVE-2015-1038,v 1.2 2016/02/24 13:03:04 wiz Exp $ - ---- CPP/7zip/UI/Client7z/Client7z.cpp.orig 2015-10-17 14:52:30.000000000 +0000 -+++ CPP/7zip/UI/Client7z/Client7z.cpp -@@ -230,8 +230,11 @@ private: - COutFileStream *_outFileStreamSpec; - CMyComPtr<ISequentialOutStream> _outFileStream; - -+ CObjectVector<NWindows::NFile::NDir::CDelayedSymLink> _delayedSymLinks; -+ - public: - void Init(IInArchive *archiveHandler, const FString &directoryPath); -+ HRESULT SetFinalAttribs(); - - UInt64 NumErrors; - bool PasswordIsDefined; -@@ -449,11 +452,23 @@ STDMETHODIMP CArchiveExtractCallback::Se - } - _outFileStream.Release(); - if (_extractMode && _processedFileInfo.AttribDefined) -- SetFileAttrib(_diskFilePath, _processedFileInfo.Attrib); -+ SetFileAttrib(_diskFilePath, _processedFileInfo.Attrib, &_delayedSymLinks); - PrintNewLine(); - return S_OK; - } - -+HRESULT CArchiveExtractCallback::SetFinalAttribs() -+{ -+ HRESULT result = S_OK; -+ -+ for (int i = 0; i != _delayedSymLinks.Size(); ++i) -+ if (!_delayedSymLinks[i].Create()) -+ result = E_FAIL; -+ -+ _delayedSymLinks.Clear(); -+ -+ return result; -+} - - STDMETHODIMP CArchiveExtractCallback::CryptoGetTextPassword(BSTR *password) - { -@@ -914,6 +929,8 @@ int MY_CDECL main(int numArgs, const cha - // extractCallbackSpec->PasswordIsDefined = true; - // extractCallbackSpec->Password = L"1"; - HRESULT result = archive->Extract(NULL, (UInt32)(Int32)(-1), false, extractCallback); -+ if (result == S_OK) -+ result = extractCallbackSpec->SetFinalAttribs(); - if (result != S_OK) - { - PrintError("Extract Error"); -$NetBSD: patch-CVE-2015-1038,v 1.2 2016/02/24 13:03:04 wiz Exp $ - ---- CPP/7zip/UI/Common/ArchiveExtractCallback.cpp.orig 2015-10-03 08:49:15.000000000 +0000 -+++ CPP/7zip/UI/Common/ArchiveExtractCallback.cpp -@@ -1502,7 +1502,7 @@ STDMETHODIMP CArchiveExtractCallback::Se - NumFiles++; - - if (!_stdOutMode && _extractMode && _fi.AttribDefined) -- SetFileAttrib(_diskFilePath, _fi.Attrib); -+ SetFileAttrib(_diskFilePath, _fi.Attrib, &_delayedSymLinks); - - RINOK(_extractCallback2->SetOperationResult(opRes, BoolToInt(_encrypted))); - -@@ -1584,8 +1584,9 @@ static unsigned GetNumSlashes(const FCha - } - } - --HRESULT CArchiveExtractCallback::SetDirsTimes() -+HRESULT CArchiveExtractCallback::SetFinalAttribs() - { -+ HRESULT result = S_OK; - CRecordVector<CExtrRefSortPair> pairs; - pairs.ClearAndSetSize(_extractedFolderPaths.Size()); - unsigned i; -@@ -1622,5 +1623,12 @@ HRESULT CArchiveExtractCallback::SetDirs - (WriteATime && ATimeDefined) ? &ATime : NULL, - (WriteMTime && MTimeDefined) ? &MTime : (_arc->MTimeDefined ? &_arc->MTime : NULL)); - } -- return S_OK; -+ -+ for (int i = 0; i != _delayedSymLinks.Size(); ++i) -+ if (!_delayedSymLinks[i].Create()) -+ result = E_FAIL; -+ -+ _delayedSymLinks.Clear(); -+ -+ return result; - } -$NetBSD: patch-CVE-2015-1038,v 1.2 2016/02/24 13:03:04 wiz Exp $ - ---- CPP/7zip/UI/Common/ArchiveExtractCallback.h.orig 2015-10-03 10:29:09.000000000 +0000 -+++ CPP/7zip/UI/Common/ArchiveExtractCallback.h -@@ -6,6 +6,8 @@ - #include "../../../Common/MyCom.h" - #include "../../../Common/Wildcard.h" - -+#include "../../../Windows/FileDir.h" -+ - #include "../../IPassword.h" - - #include "../../Common/FileStreams.h" -@@ -237,6 +239,8 @@ class CArchiveExtractCallback: - bool _saclEnabled; - #endif - -+ CObjectVector<NWindows::NFile::NDir::CDelayedSymLink> _delayedSymLinks; -+ - void CreateComplexDirectory(const UStringVector &dirPathParts, FString &fullPath); - HRESULT GetTime(int index, PROPID propID, FILETIME &filetime, bool &filetimeIsDefined); - HRESULT GetUnpackSize(); -@@ -330,7 +334,7 @@ public: - } - #endif - -- HRESULT SetDirsTimes(); -+ HRESULT SetFinalAttribs(); - }; - - bool CensorNode_CheckPath(const NWildcard::CCensorNode &node, const CReadArcItem &item); -$NetBSD: patch-CVE-2015-1038,v 1.2 2016/02/24 13:03:04 wiz Exp $ - ---- CPP/7zip/UI/Common/Extract.cpp.orig 2015-09-07 19:47:32.000000000 +0000 -+++ CPP/7zip/UI/Common/Extract.cpp -@@ -207,7 +207,7 @@ static HRESULT DecompressArchive( - else - result = archive->Extract(&realIndices.Front(), realIndices.Size(), testMode, ecs); - if (result == S_OK && !options.StdInMode) -- result = ecs->SetDirsTimes(); -+ result = ecs->SetFinalAttribs(); - return callback->ExtractResult(result); - } - -$NetBSD: patch-CVE-2015-1038,v 1.2 2016/02/24 13:03:04 wiz Exp $ - ---- CPP/Windows/FileDir.cpp.orig 2015-10-10 12:37:41.000000000 +0000 -+++ CPP/Windows/FileDir.cpp -@@ -347,7 +347,8 @@ static int convert_to_symlink(const char - return -1; - } - --bool SetFileAttrib(CFSTR fileName, DWORD fileAttributes) -+bool SetFileAttrib(CFSTR fileName, DWORD fileAttributes, -+ CObjectVector<CDelayedSymLink> *delayedSymLinks) - { - if (!fileName) { - SetLastError(ERROR_PATH_NOT_FOUND); -@@ -379,7 +380,9 @@ bool SetFileAttrib(CFSTR fileName, DWORD - stat_info.st_mode = fileAttributes >> 16; - #ifdef ENV_HAVE_LSTAT - if (S_ISLNK(stat_info.st_mode)) { -- if ( convert_to_symlink(name) != 0) { -+ if (delayedSymLinks) -+ delayedSymLinks->Add(CDelayedSymLink(name)); -+ else if ( convert_to_symlink(name) != 0) { - TRACEN((printf("SetFileAttrib(%s,%d) : false-3\n",(const char *)name,fileAttributes))) - return false; - } -@@ -814,6 +817,43 @@ bool CTempDir::Remove() - return !_mustBeDeleted; - } - -+#ifdef ENV_UNIX -+ -+CDelayedSymLink::CDelayedSymLink(const char * source) -+ : _source(source) -+{ -+ struct stat st; -+ -+ if (lstat(_source, &st) == 0) { -+ _dev = st.st_dev; -+ _ino = st.st_ino; -+ } else { -+ _dev = 0; -+ } -+} -+ -+bool CDelayedSymLink::Create() -+{ -+ struct stat st; -+ -+ if (_dev == 0) { -+ errno = EPERM; -+ return false; -+ } -+ if (lstat(_source, &st) != 0) -+ return false; -+ if (_dev != st.st_dev || _ino != st.st_ino) { -+ // Placeholder file has been overwritten or moved by another -+ // symbolic link creation -+ errno = EPERM; -+ return false; -+ } -+ -+ return convert_to_symlink(_source) == 0; -+} -+ -+#endif // ENV_UNIX -+ - }}} - - #ifndef _SFX -$NetBSD: patch-CVE-2015-1038,v 1.2 2016/02/24 13:03:04 wiz Exp $ - ---- CPP/Windows/FileDir.h.orig 2015-06-19 10:52:06.000000000 +0000 -+++ CPP/Windows/FileDir.h -@@ -4,6 +4,11 @@ - #define __WINDOWS_FILE_DIR_H - - #include "../Common/MyString.h" -+#include "../Common/MyVector.h" -+ -+#ifdef ENV_UNIX -+#include <sys/stat.h> -+#endif - - #include "FileIO.h" - -@@ -11,11 +16,14 @@ - namespace NFile { - namespace NDir { - -+class CDelayedSymLink; -+ - bool GetWindowsDir(FString &path); - bool GetSystemDir(FString &path); - - bool SetDirTime(CFSTR path, const FILETIME *cTime, const FILETIME *aTime, const FILETIME *mTime); --bool SetFileAttrib(CFSTR path, DWORD attrib); -+bool SetFileAttrib(CFSTR path, DWORD attrib, -+ CObjectVector<CDelayedSymLink> *delayedSymLinks = 0); - bool MyMoveFile(CFSTR existFileName, CFSTR newFileName); - - #ifndef UNDER_CE -@@ -76,6 +84,31 @@ - bool Remove(); - }; - -+// Symbolic links must be created last so that they can't be used to -+// create or overwrite files above the extraction directory. -+class CDelayedSymLink -+{ -+#ifdef ENV_UNIX -+ // Where the symlink should be created. The target is specified in -+ // the placeholder file. -+ AString _source; -+ -+ // Device and inode of the placeholder file. Before creating the -+ // symlink, we must check that these haven't been changed by creation -+ // of another symlink. -+ dev_t _dev; -+ ino_t _ino; -+ -+public: -+ explicit CDelayedSymLink(const char * source); -+ bool Create(); -+#else // !ENV_UNIX -+public: -+ CDelayedSymLink(const char * source) {} -+ bool Create() { return true; } -+#endif // ENV_UNIX -+}; -+ - #if !defined(UNDER_CE) - class CCurrentDirRestorer - { diff --git a/archivers/p7zip/patches/patch-ac b/archivers/p7zip/patches/patch-ac index f381223ee25..6d0f543a4cd 100644 --- a/archivers/p7zip/patches/patch-ac +++ b/archivers/p7zip/patches/patch-ac @@ -1,6 +1,6 @@ -$NetBSD: patch-ac,v 1.9 2015/12/29 19:39:21 adam Exp $ +$NetBSD: patch-ac,v 1.10 2016/04/07 14:41:34 ryoon Exp $ ---- makefile.glb.orig 2015-10-03 20:25:19.000000000 +0000 +--- makefile.glb.orig 2016-03-10 20:20:14.000000000 +0000 +++ makefile.glb @@ -1,14 +1,14 @@ @@ -9,13 +9,13 @@ $NetBSD: patch-ac,v 1.9 2015/12/29 19:39:21 adam Exp $ -CFLAGS=-c -I. \ +CFLAGS+=-c -I. \ -I../../../../C \ - -I../../../myWindows \ - -I../../../include_windows \ - -I../../.. \ + -I../../../../CPP/myWindows \ + -I../../../../CPP/include_windows \ + -I../../../../CPP \ $(ALLFLAGS) $(ALLFLAGS_C) -CXXFLAGS=-c -I. \ +CXXFLAGS+=-c -I. \ -I../../../../C \ - -I../../../myWindows \ - -I../../../ \ + -I../../../../CPP/myWindows \ + -I../../../../CPP/include_windows \ |