Hello community, here is the log from the commit of package unrar for openSUSE:Factory:NonFree checked in at 2019-11-18 20:12:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory:NonFree/unrar (Old) and /work/SRC/openSUSE:Factory:NonFree/.unrar.new.26869 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "unrar" Mon Nov 18 20:12:26 2019 rev:84 rq:749149 version:5.8.4 Changes: -------- --- /work/SRC/openSUSE:Factory:NonFree/unrar/unrar.changes 2019-10-21 12:32:40.616251550 +0200 +++ /work/SRC/openSUSE:Factory:NonFree/.unrar.new.26869/unrar.changes 2019-11-18 20:12:56.725513855 +0100 @@ -1,0 +2,6 @@ +Sun Nov 17 21:04:09 UTC 2019 - Ismail Dönmez <[email protected]> + +- Update to version 5.8.4 + * Based on WinRAR version 5.80 beta 4 + +------------------------------------------------------------------- Old: ---- unrarsrc-5.8.3.tar.gz New: ---- unrarsrc-5.8.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ unrar.spec ++++++ --- /var/tmp/diff_new_pack.v3H01n/_old 2019-11-18 20:12:57.229513598 +0100 +++ /var/tmp/diff_new_pack.v3H01n/_new 2019-11-18 20:12:57.233513596 +0100 @@ -18,10 +18,10 @@ # majorversion should match the major version number. %define majorversion 5 -%define libsuffix 5_8_3 +%define libsuffix 5_8_4 Name: unrar -Version: 5.8.3 +Version: 5.8.4 Release: 0 Summary: A program to extract, test, and view RAR archives License: NonFree ++++++ unrarsrc-5.8.3.tar.gz -> unrarsrc-5.8.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/archive.hpp new/unrar/archive.hpp --- old/unrar/archive.hpp 2019-10-20 13:20:09.000000000 +0200 +++ new/unrar/archive.hpp 2019-11-17 13:23:47.000000000 +0100 @@ -29,7 +29,6 @@ void UpdateLatestTime(FileHeader *CurBlock); void ConvertNameCase(wchar *Name); void ConvertFileHeader(FileHeader *hd); - void WriteBlock50(HEADER_TYPE HeaderType,BaseBlock *wb,bool OnlySetSize,bool NonFinalWrite); size_t ReadHeader14(); size_t ReadHeader15(); size_t ReadHeader50(); @@ -65,8 +64,6 @@ size_t SearchBlock(HEADER_TYPE HeaderType); size_t SearchSubBlock(const wchar *Type); size_t SearchRR(); - void WriteBlock(HEADER_TYPE HeaderType,BaseBlock *wb=NULL,bool OnlySetSize=false,bool NonFinalWrite=false); - void SetBlockSize(HEADER_TYPE HeaderType,BaseBlock *wb=NULL) {WriteBlock(HeaderType,wb,true);} size_t ReadHeader(); void CheckArc(bool EnableBroken); void CheckOpen(const wchar *Name); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/arcread.cpp new/unrar/arcread.cpp --- old/unrar/arcread.cpp 2019-10-20 13:20:09.000000000 +0200 +++ new/unrar/arcread.cpp 2019-11-17 13:23:47.000000000 +0100 @@ -720,6 +720,7 @@ UnkEncVerMsg(FileName,Info); return 0; } + Raw.GetB(CryptHead.Salt,SIZE_SALT50); if (CryptHead.UsePswCheck) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/dll.rc new/unrar/dll.rc --- old/unrar/dll.rc 2019-10-20 12:54:48.000000000 +0200 +++ new/unrar/dll.rc 2019-11-17 13:01:32.000000000 +0100 @@ -2,8 +2,8 @@ #include <commctrl.h> VS_VERSION_INFO VERSIONINFO -FILEVERSION 5, 80, 3, 3220 -PRODUCTVERSION 5, 80, 3, 3220 +FILEVERSION 5, 80, 4, 3248 +PRODUCTVERSION 5, 80, 4, 3248 FILEOS VOS__WINDOWS32 FILETYPE VFT_APP { @@ -14,8 +14,8 @@ VALUE "CompanyName", "Alexander Roshal\0" VALUE "ProductName", "RAR decompression library\0" VALUE "FileDescription", "RAR decompression library\0" - VALUE "FileVersion", "5.80.3\0" - VALUE "ProductVersion", "5.80.3\0" + VALUE "FileVersion", "5.80.4\0" + VALUE "ProductVersion", "5.80.4\0" VALUE "LegalCopyright", "Copyright � Alexander Roshal 1993-2019\0" VALUE "OriginalFilename", "Unrar.dll\0" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/extract.cpp new/unrar/extract.cpp --- old/unrar/extract.cpp 2019-10-20 13:20:09.000000000 +0200 +++ new/unrar/extract.cpp 2019-11-17 13:23:47.000000000 +0100 @@ -735,38 +735,52 @@ else mprintf(L"\b\b\b\b\b "); + // If we successfully unpacked a hard link, we wish to set its file + // attributes. Hard link shares file metadata with link target, + // so we do not need to set link time or owner. But when we overwrite + // an existing link, we can call PrepareToDelete(), which affects + // link target attributes as well. So we set link attributes to restore + // both target and link attributes if PrepareToDelete() changed them. + bool SetAttrOnly=LinkEntry && Arc.FileHead.RedirType==FSREDIR_HARDLINK && LinkSuccess; + if (!TestMode && (Command=='X' || Command=='E') && - (!LinkEntry || Arc.FileHead.RedirType==FSREDIR_FILECOPY && LinkSuccess) && + (!LinkEntry || SetAttrOnly || Arc.FileHead.RedirType==FSREDIR_FILECOPY && LinkSuccess) && (!BrokenFile || Cmd->KeepBroken)) { - // We could preallocate more space that really written to broken file - // or file with crafted header. - if (Preallocated>0 && (BrokenFile || DataIO.CurUnpWrite!=Preallocated)) - CurFile.Truncate(); - -#if defined(_WIN_ALL) || defined(_EMX) - if (Cmd->ClearArc) - Arc.FileHead.FileAttr&=~FILE_ATTRIBUTE_ARCHIVE; -#endif - - - CurFile.SetOpenFileTime( - Cmd->xmtime==EXTTIME_NONE ? NULL:&Arc.FileHead.mtime, - Cmd->xctime==EXTTIME_NONE ? NULL:&Arc.FileHead.ctime, - Cmd->xatime==EXTTIME_NONE ? NULL:&Arc.FileHead.atime); - CurFile.Close(); + // Below we use DestFileName instead of CurFile.FileName, + // so we can set file attributes also for hard links, which do not + // have the open CurFile. These strings are the same for other items. + + if (!SetAttrOnly) + { + // We could preallocate more space that really written to broken file + // or file with crafted header. + if (Preallocated>0 && (BrokenFile || DataIO.CurUnpWrite!=Preallocated)) + CurFile.Truncate(); + + + CurFile.SetOpenFileTime( + Cmd->xmtime==EXTTIME_NONE ? NULL:&Arc.FileHead.mtime, + Cmd->xctime==EXTTIME_NONE ? NULL:&Arc.FileHead.ctime, + Cmd->xatime==EXTTIME_NONE ? NULL:&Arc.FileHead.atime); + CurFile.Close(); + + SetFileHeaderExtra(Cmd,Arc,DestFileName); + + CurFile.SetCloseFileTime( + Cmd->xmtime==EXTTIME_NONE ? NULL:&Arc.FileHead.mtime, + Cmd->xatime==EXTTIME_NONE ? NULL:&Arc.FileHead.atime); + } + #if defined(_WIN_ALL) && !defined(SFX_MODULE) if (Cmd->SetCompressedAttr && (Arc.FileHead.FileAttr & FILE_ATTRIBUTE_COMPRESSED)!=0) - SetFileCompression(CurFile.FileName,true); + SetFileCompression(DestFileName,true); + if (Cmd->ClearArc) + Arc.FileHead.FileAttr&=~FILE_ATTRIBUTE_ARCHIVE; #endif - SetFileHeaderExtra(Cmd,Arc,CurFile.FileName); - - CurFile.SetCloseFileTime( - Cmd->xmtime==EXTTIME_NONE ? NULL:&Arc.FileHead.mtime, - Cmd->xatime==EXTTIME_NONE ? NULL:&Arc.FileHead.atime); - if (!Cmd->IgnoreGeneralAttr && !SetFileAttr(CurFile.FileName,Arc.FileHead.FileAttr)) - uiMsg(UIERROR_FILEATTR,Arc.FileName,CurFile.FileName); + if (!Cmd->IgnoreGeneralAttr && !SetFileAttr(DestFileName,Arc.FileHead.FileAttr)) + uiMsg(UIERROR_FILEATTR,Arc.FileName,DestFileName); PrevProcessed=true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/savepos.hpp new/unrar/savepos.hpp --- old/unrar/savepos.hpp 2019-10-20 13:20:10.000000000 +0200 +++ new/unrar/savepos.hpp 2019-11-17 13:23:48.000000000 +0100 @@ -14,13 +14,26 @@ } ~SaveFilePos() { - // If file is already closed by current exception processing, - // we would get uneeded error messages and an exception inside of - // exception and terminate if we try to seek without checking - // if file is still opened. We should not also restore the position - // if external code closed the file on purpose. + // Unless the file is already closed either by current exception + // processing or intentionally by external code. if (SaveFile->IsOpened()) - SaveFile->Seek(SavePos,SEEK_SET); + { + try + { + SaveFile->Seek(SavePos,SEEK_SET); + } + catch(RAR_EXIT) + { + // Seek() can throw an exception and it terminates process + // if we are already processing another exception. Also in C++ 11 + // an exception in destructor always terminates process unless + // we mark destructor with noexcept(false). So we do not want to + // throw here. To prevent data loss we do not want to continue + // execution after seek error, so we close the file. + // Any next access to this file will return an error. + SaveFile->Close(); + } + } } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unpack50.cpp new/unrar/unpack50.cpp --- old/unrar/unpack50.cpp 2019-10-20 13:20:11.000000000 +0200 +++ new/unrar/unpack50.cpp 2019-11-17 13:23:49.000000000 +0100 @@ -436,6 +436,10 @@ } return SrcData; case FILTER_ARM: + // 2019-11-15: we turned off ARM filter by default when compressing, + // mostly because it is inefficient for modern 64 bit ARM binaries. + // It was turned on by default in 5.0 - 5.80b3 , so we still need it + // here for compatibility with some of previously created archives. { uint FileOffset=(uint)WrittenFileSize; // DataSize is unsigned, so we use "CurPos+3" and not "DataSize-3" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/version.hpp new/unrar/version.hpp --- old/unrar/version.hpp 2019-10-20 13:20:11.000000000 +0200 +++ new/unrar/version.hpp 2019-11-17 13:23:49.000000000 +0100 @@ -1,6 +1,6 @@ #define RARVER_MAJOR 5 #define RARVER_MINOR 80 -#define RARVER_BETA 3 -#define RARVER_DAY 20 -#define RARVER_MONTH 10 +#define RARVER_BETA 4 +#define RARVER_DAY 17 +#define RARVER_MONTH 11 #define RARVER_YEAR 2019
