Hello community, here is the log from the commit of package unrar for openSUSE:Factory:NonFree checked in at 2013-12-08 19:50:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory:NonFree/unrar (Old) and /work/SRC/openSUSE:Factory:NonFree/.unrar.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "unrar" Changes: -------- --- /work/SRC/openSUSE:Factory:NonFree/unrar/unrar.changes 2013-11-12 16:37:03.000000000 +0100 +++ /work/SRC/openSUSE:Factory:NonFree/.unrar.new/unrar.changes 2013-12-08 19:50:05.000000000 +0100 @@ -1,0 +2,14 @@ +Thu Dec 5 03:08:35 UTC 2013 - lazy.k...@opensuse.org + +- Update to 5.0.14. + * Based on final rar 5.01. + * Bugs fixed: + + "Test" command could erroneously report damaged data in valid + recovery record if only a part of files in RAR 5.0 archive + was tested. It did not happen if entire archive contents was + tested. + + "Test" command erroneously reported errors when verifying RAR + 4.x Unix symbolic links. + + RAR 5.0 'p' (print) command did not display file contents. + +------------------------------------------------------------------- Old: ---- unrarsrc-5.0.13.tar.gz New: ---- unrarsrc-5.0.14.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ unrar.spec ++++++ --- /var/tmp/diff_new_pack.mCNp0i/_old 2013-12-08 19:50:06.000000000 +0100 +++ /var/tmp/diff_new_pack.mCNp0i/_new 2013-12-08 19:50:06.000000000 +0100 @@ -18,10 +18,10 @@ # majorversion should match the major version number. %define majorversion 5 -%define libsuffix 5_0_13 +%define libsuffix 5_0_14 Name: unrar -Version: 5.0.13 +Version: 5.0.14 Release: 0 License: SUSE-NonFree Summary: A program to extract, test, and view RAR archives ++++++ unrarsrc-5.0.13.tar.gz -> unrarsrc-5.0.14.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/arcread.cpp new/unrar/arcread.cpp --- old/unrar/arcread.cpp 2013-11-12 09:00:45.000000000 +0100 +++ new/unrar/arcread.cpp 2013-12-01 09:10:14.000000000 +0100 @@ -88,7 +88,8 @@ // If block positions are equal to file size, this is not an error. // It can happen when we reached the end of older RAR 1.5 archive, // which did not have the end of archive block. - if (CurBlockPos>ArcSize || NextBlockPos>ArcSize) + if (CurBlockPos>ArcSize || NextBlockPos>ArcSize || + CurBlockPos!=ArcSize && NextBlockPos!=ArcSize && Format==RARFMT50) { #ifndef SHELL_EXT Log(FileName,St(MLogUnexpEOF)); @@ -609,7 +610,11 @@ // resulting in 2 MB maximum header size, so here we read 4 byte CRC32 // followed by 3 bytes or less of header size. const size_t FirstReadSize=7; - Raw.Read(FirstReadSize); + if (Raw.Read(FirstReadSize)<FirstReadSize) + { + UnexpEndArcMsg(); + return 0; + } ShortBlock.Reset(); ShortBlock.HeadCRC=Raw.Get4(); @@ -618,7 +623,7 @@ if (BlockSize==0 || SizeBytes==0) { - UnexpEndArcMsg(); // Incomplete or broken block size field. + BrokenHeaderMsg(); return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/dll.cpp new/unrar/dll.cpp --- old/unrar/dll.cpp 2013-11-12 09:00:45.000000000 +0100 +++ new/unrar/dll.cpp 2013-12-01 09:10:14.000000000 +0100 @@ -195,7 +195,16 @@ } else return ERAR_EOPEN; - return(Data->Arc.BrokenHeader ? ERAR_BAD_DATA:ERAR_END_ARCHIVE); + + if (Data->Arc.BrokenHeader) + return ERAR_BAD_DATA; + + // Might be necessary if RARSetPassword is still called instead of + // open callback for RAR5 archives and if password is invalid. + if (Data->Arc.FailedHeaderDecryption) + return ERAR_BAD_PASSWORD; + + return ERAR_END_ARCHIVE; } FileHeader *hd=&Data->Arc.FileHead; if (Data->OpenMode==RAR_OM_LIST && hd->SplitBefore) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/dll.rc new/unrar/dll.rc --- old/unrar/dll.rc 2013-11-12 08:56:32.000000000 +0100 +++ new/unrar/dll.rc 2013-12-01 09:07:28.000000000 +0100 @@ -2,8 +2,8 @@ #include <commctrl.h> VS_VERSION_INFO VERSIONINFO -FILEVERSION 5, 1, 1, 1047 -PRODUCTVERSION 5, 1, 1, 1047 +FILEVERSION 5, 1, 100, 1066 +PRODUCTVERSION 5, 1, 100, 1066 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.1.1\0" - VALUE "ProductVersion", "5.1.1\0" + VALUE "FileVersion", "5.1.0\0" + VALUE "ProductVersion", "5.1.0\0" VALUE "LegalCopyright", "Copyright � Alexander Roshal 1993-2013\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 2013-11-12 09:00:46.000000000 +0100 +++ new/unrar/extract.cpp 2013-12-01 09:10:14.000000000 +0100 @@ -643,7 +643,7 @@ // If we already have ERAR_EOPEN as result of missing volume, // we should not replace it with less precise ERAR_BAD_DATA. if (Cmd->DllError!=ERAR_EOPEN) - Cmd->DllError=ERAR_BAD_DATA; + Cmd->DllError=WrongPassword ? ERAR_BAD_PASSWORD : ERAR_BAD_DATA; #endif } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/file.cpp new/unrar/file.cpp --- old/unrar/file.cpp 2013-11-12 09:00:46.000000000 +0100 +++ new/unrar/file.cpp 2013-12-01 09:10:14.000000000 +0100 @@ -60,17 +60,27 @@ DWORD LastError; if (hNewFile==BAD_HANDLE) { - // Following CreateFile("\\?\path") call can change the last error code - // from "not found" to "access denied" for relative paths like "..\path". - // But we need the correct "not found" code to create a new archive - // if existing one is not found. So we preserve the code here. LastError=GetLastError(); wchar LongName[NM]; if (GetWinLongPath(Name,LongName,ASIZE(LongName))) { hNewFile=CreateFile(LongName,Access,ShareMode,NULL,OPEN_EXISTING,Flags,NULL); - LastError=GetLastError(); + + // For archive names longer than 260 characters first CreateFile + // (without \\?\) fails and sets LastError to 3 (access denied). + // We need the correct "file not found" error code to decide + // if we create a new archive or quit with "cannot create" error. + // So we need to check the error code after \\?\ CreateFile again, + // otherwise we'll fail to create new archives with long names. + // But we cannot simply assign the new code to LastError, + // because it would break "..\arcname.rar" relative names processing. + // First CreateFile returns the correct "file not found" code for such + // names, but "\\?\" CreateFile returns ERROR_INVALID_NAME treating + // dots as a directory name. So we check only for "file not found" + // error here and for other errors use the first CreateFile result. + if (GetLastError()==ERROR_FILE_NOT_FOUND) + LastError=ERROR_FILE_NOT_FOUND; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/version.hpp new/unrar/version.hpp --- old/unrar/version.hpp 2013-11-12 09:00:46.000000000 +0100 +++ new/unrar/version.hpp 2013-12-01 09:10:14.000000000 +0100 @@ -1,6 +1,6 @@ #define RARVER_MAJOR 5 #define RARVER_MINOR 1 -#define RARVER_BETA 1 -#define RARVER_DAY 12 -#define RARVER_MONTH 11 +#define RARVER_BETA 0 +#define RARVER_DAY 1 +#define RARVER_MONTH 12 #define RARVER_YEAR 2013 -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org