Hello community, here is the log from the commit of package unrar for openSUSE:Factory:NonFree checked in at 2018-10-02 19:49:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory:NonFree/unrar (Old) and /work/SRC/openSUSE:Factory:NonFree/.unrar.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "unrar" Tue Oct 2 19:49:39 2018 rev:73 rq:639542 version:5.6.7 Changes: -------- --- /work/SRC/openSUSE:Factory:NonFree/unrar/unrar.changes 2018-06-29 22:37:32.205942636 +0200 +++ /work/SRC/openSUSE:Factory:NonFree/.unrar.new/unrar.changes 2018-10-02 19:49:50.825679713 +0200 @@ -1,0 +2,6 @@ +Tue Oct 2 09:23:09 UTC 2018 - Ismail Dönmez <[email protected]> + +- Update to version 5.6.7 + * No upstream changelog + +------------------------------------------------------------------- Old: ---- unrarsrc-5.6.5.tar.gz New: ---- unrarsrc-5.6.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ unrar.spec ++++++ --- /var/tmp/diff_new_pack.OqJYRH/_old 2018-10-02 19:49:51.565678940 +0200 +++ /var/tmp/diff_new_pack.OqJYRH/_new 2018-10-02 19:49:51.565678940 +0200 @@ -18,10 +18,10 @@ # majorversion should match the major version number. %define majorversion 5 -%define libsuffix 5_6_5 +%define libsuffix 5_6_7 Name: unrar -Version: 5.6.5 +Version: 5.6.7 Release: 0 Summary: A program to extract, test, and view RAR archives License: NonFree ++++++ unrarsrc-5.6.5.tar.gz -> unrarsrc-5.6.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/arcread.cpp new/unrar/arcread.cpp --- old/unrar/arcread.cpp 2018-06-24 17:10:30.000000000 +0200 +++ new/unrar/arcread.cpp 2018-09-30 20:05:39.000000000 +0200 @@ -566,7 +566,7 @@ // We repeat the password request only for manually entered passwords // and not for -p<pwd>. Wrong password can be intentionally provided // in -p<pwd> to not stop batch processing for encrypted archives. - bool GlobalPassword=Cmd->Password.IsSet(); + bool GlobalPassword=Cmd->Password.IsSet() || uiIsGlobalPasswordSet(); while (true) // Repeat the password prompt for wrong passwords. { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/dll.rc new/unrar/dll.rc --- old/unrar/dll.rc 2018-06-24 17:02:05.000000000 +0200 +++ new/unrar/dll.rc 2018-09-30 20:00:39.000000000 +0200 @@ -2,8 +2,8 @@ #include <commctrl.h> VS_VERSION_INFO VERSIONINFO -FILEVERSION 5, 60, 100, 2736 -PRODUCTVERSION 5, 60, 100, 2736 +FILEVERSION 5, 61, 100, 2834 +PRODUCTVERSION 5, 61, 100, 2834 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.60.0\0" - VALUE "ProductVersion", "5.60.0\0" + VALUE "FileVersion", "5.61.0\0" + VALUE "ProductVersion", "5.61.0\0" VALUE "LegalCopyright", "Copyright � Alexander Roshal 1993-2018\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 2018-06-24 17:10:31.000000000 +0200 +++ new/unrar/extract.cpp 2018-09-30 20:05:41.000000000 +0200 @@ -161,7 +161,7 @@ // This size is necessary to display the correct total progress indicator. wchar NextName[NM]; - wcscpy(NextName,Arc.FileName); + wcsncpyz(NextName,Arc.FileName,ASIZE(NextName)); while (true) { @@ -323,6 +323,7 @@ if (wcsicomp(ArcName,CurVolName)!=0 && FileExist(ArcName)) { + wcsncpyz(Cmd->ArcName,ArcName,ASIZE(ArcName)); // For GUI "Delete archive after extraction". // If first volume name does not match the current name and if such // volume name really exists, let's unpack from this first volume. Repeat=true; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/options.hpp new/unrar/options.hpp --- old/unrar/options.hpp 2018-06-24 17:10:31.000000000 +0200 +++ new/unrar/options.hpp 2018-09-30 20:05:42.000000000 +0200 @@ -12,11 +12,7 @@ EXCL_SKIPWHOLEPATH, // -ep (exclude the path completely) EXCL_BASEPATH, // -ep1 (exclude the base part of path) EXCL_SAVEFULLPATH, // -ep2 (the full path without the disk letter) - EXCL_ABSPATH, // -ep3 (the full path with the disk letter) - - EXCL_SKIPABSPATH // Works as EXCL_BASEPATH for fully qualified paths - // and as EXCL_UNCHANGED for relative paths. - // Used by WinRAR GUI only. + EXCL_ABSPATH // -ep3 (the full path with the disk letter) }; enum {SOLID_NONE=0,SOLID_NORMAL=1,SOLID_COUNT=2,SOLID_FILEEXT=4, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/qopen.cpp new/unrar/qopen.cpp --- old/unrar/qopen.cpp 2018-06-24 17:10:31.000000000 +0200 +++ new/unrar/qopen.cpp 2018-09-30 20:05:43.000000000 +0200 @@ -84,7 +84,7 @@ if (ReadSize==0 || Arc->GetHeaderType()!=HEAD_SERVICE || !Arc->SubHead.CmpName(SUBHEAD_TYPE_QOPEN)) return; - QLHeaderPos=Arc->CurBlockPos; + QOHeaderPos=Arc->CurBlockPos; RawDataStart=Arc->Tell(); RawDataSize=Arc->SubHead.UnpSize; @@ -172,7 +172,7 @@ // archive updating involve several passes. So if we detect that file // pointer is moved back, we reload quick open data from beginning. if (Method==SEEK_SET && (uint64)Offset<SeekPos && (uint64)Offset<LastReadHeaderPos) - Load(QLHeaderPos); + Load(QOHeaderPos); if (Method==SEEK_SET) SeekPos=Offset; @@ -250,10 +250,10 @@ return false; } - // If rest of block data crosses buffer boundary, read it in loop. - size_t DataLeft=ReadBufSize-ReadBufPos; + // If rest of block data crosses Buf boundary, read it in loop. while (SizeToRead>0) { + size_t DataLeft=ReadBufSize-ReadBufPos; size_t CurSizeToRead=Min(DataLeft,(size_t)SizeToRead); Raw.Read(Buf+ReadBufPos,CurSizeToRead); ReadBufPos+=CurSizeToRead; @@ -285,6 +285,6 @@ LastReadHeader.Alloc(HeaderSize); Raw.GetB(&LastReadHeader[0],HeaderSize); // Calculate the absolute position as offset from quick open service header. - LastReadHeaderPos=QLHeaderPos-Offset; + LastReadHeaderPos=QOHeaderPos-Offset; return true; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/qopen.hpp new/unrar/qopen.hpp --- old/unrar/qopen.hpp 2018-06-24 17:10:31.000000000 +0200 +++ new/unrar/qopen.hpp 2018-09-30 20:05:43.000000000 +0200 @@ -29,24 +29,24 @@ QuickOpenItem *ListStart; QuickOpenItem *ListEnd; - byte *Buf; - static const size_t MaxBufSize=0x10000; // Must be multiple of CRYPT_BLOCK_SIZE. - size_t CurBufSize; + byte *Buf; // Read quick open data here. + static const size_t MaxBufSize=0x10000; // Buf size, must be multiple of CRYPT_BLOCK_SIZE. + size_t CurBufSize; // Current size of buffered data in write mode. #ifndef RAR_NOCRYPT // For shell extension. CryptData Crypt; #endif bool Loaded; - uint64 QLHeaderPos; - uint64 RawDataStart; - uint64 RawDataSize; - uint64 RawDataPos; - size_t ReadBufSize; - size_t ReadBufPos; + uint64 QOHeaderPos; // Main QO header position. + uint64 RawDataStart; // Start of QO data, just after the main header. + uint64 RawDataSize; // Size of entire QO data. + uint64 RawDataPos; // Current read position in QO data. + size_t ReadBufSize; // Size of Buf data currently read from QO. + size_t ReadBufPos; // Current read position in Buf data. Array<byte> LastReadHeader; uint64 LastReadHeaderPos; uint64 SeekPos; - bool UnsyncSeekPos; // QOpen SeekPos does not match an actual file pointer. + bool UnsyncSeekPos; // QOpen SeekPos does not match an actual file pointer. public: QuickOpen(); ~QuickOpen(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/ui.hpp new/unrar/ui.hpp --- old/unrar/ui.hpp 2018-06-24 17:10:32.000000000 +0200 +++ new/unrar/ui.hpp 2018-09-30 20:05:45.000000000 +0200 @@ -85,6 +85,7 @@ enum UIPASSWORD_TYPE {UIPASSWORD_GLOBAL,UIPASSWORD_FILE,UIPASSWORD_ARCHIVE}; bool uiGetPassword(UIPASSWORD_TYPE Type,const wchar *FileName,SecPassword *Password); +bool uiIsGlobalPasswordSet(); enum UIALARM_TYPE {UIALARM_ERROR, UIALARM_INFO, UIALARM_QUESTION}; void uiAlarm(UIALARM_TYPE Type); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/uiconsole.cpp new/unrar/uiconsole.cpp --- old/unrar/uiconsole.cpp 2018-06-24 17:10:32.000000000 +0200 +++ new/unrar/uiconsole.cpp 2018-09-30 20:05:45.000000000 +0200 @@ -219,6 +219,7 @@ break; case UIERROR_INVALIDNAME: Log(Str[0],St(MInvalidName),Str[1]); + mprintf(L"\n"); // Needed when called from CmdExtract::ExtractCurrentFile. break; #ifndef SFX_MODULE case UIERROR_NEWRARFORMAT: @@ -354,6 +355,12 @@ } +bool uiIsGlobalPasswordSet() +{ + return false; +} + + void uiAlarm(UIALARM_TYPE Type) { if (uiSoundEnabled) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/uisilent.cpp new/unrar/uisilent.cpp --- old/unrar/uisilent.cpp 2018-06-24 17:10:32.000000000 +0200 +++ new/unrar/uisilent.cpp 2018-09-30 20:05:45.000000000 +0200 @@ -39,6 +39,12 @@ } +bool uiIsGlobalPasswordSet() +{ + return false; +} + + void uiAlarm(UIALARM_TYPE Type) { } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/unicode.cpp new/unrar/unicode.cpp --- old/unrar/unicode.cpp 2018-06-24 17:10:32.000000000 +0200 +++ new/unrar/unicode.cpp 2018-09-30 20:05:45.000000000 +0200 @@ -138,6 +138,11 @@ if (wcschr(Src,(wchar)MappedStringMark)==NULL) return false; + // Seems to be that wcrtomb in some memory analyzing libraries + // can produce uninitilized output while reporting success on garbage input. + // So we clean the destination to calm analyzers. + memset(Dest,0,DestSize); + Success=true; uint SrcPos=0,DestPos=0; while (Src[SrcPos]!=0 && DestPos<DestSize-MB_CUR_MAX) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/version.hpp new/unrar/version.hpp --- old/unrar/version.hpp 2018-06-24 17:10:32.000000000 +0200 +++ new/unrar/version.hpp 2018-09-30 20:05:46.000000000 +0200 @@ -1,6 +1,6 @@ #define RARVER_MAJOR 5 -#define RARVER_MINOR 60 +#define RARVER_MINOR 61 #define RARVER_BETA 0 -#define RARVER_DAY 24 -#define RARVER_MONTH 6 +#define RARVER_DAY 30 +#define RARVER_MONTH 9 #define RARVER_YEAR 2018 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/win32acl.cpp new/unrar/win32acl.cpp --- old/unrar/win32acl.cpp 2018-06-24 17:10:32.000000000 +0200 +++ new/unrar/win32acl.cpp 2018-09-30 20:05:46.000000000 +0200 @@ -54,7 +54,10 @@ if (!SetCode) { uiMsg(UIERROR_ACLSET,Arc.FileName,FileName); + DWORD LastError=GetLastError(); ErrHandler.SysErrMsg(); + if (LastError==ERROR_ACCESS_DENIED && !IsUserAdmin()) + uiMsg(UIERROR_NEEDADMIN); ErrHandler.SetErrorCode(RARX_WARNING); } } @@ -86,7 +89,10 @@ if (!SetCode) { uiMsg(UIERROR_ACLSET,Arc.FileName,FileName); + DWORD LastError=GetLastError(); ErrHandler.SysErrMsg(); + if (LastError==ERROR_ACCESS_DENIED && !IsUserAdmin()) + uiMsg(UIERROR_NEEDADMIN); ErrHandler.SetErrorCode(RARX_WARNING); } }
