Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package unrar for openSUSE:Factory:NonFree 
checked in at 2023-06-24 20:13:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory:NonFree/unrar (Old)
 and      /work/SRC/openSUSE:Factory:NonFree/.unrar.new.15902 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "unrar"

Sat Jun 24 20:13:04 2023 rev:105 rq:1094709 version:6.2.8

Changes:
--------
--- /work/SRC/openSUSE:Factory:NonFree/unrar/unrar.changes      2023-03-09 
17:43:58.330343353 +0100
+++ /work/SRC/openSUSE:Factory:NonFree/.unrar.new.15902/unrar.changes   
2023-06-24 20:13:05.203840807 +0200
@@ -1,0 +2,6 @@
+Thu Jun 22 14:32:49 UTC 2023 - Pablo Herranz Ramírez <[email protected]>
+
+- Update to version 6.2.8
+  * No upstream changelog available
+
+-------------------------------------------------------------------

Old:
----
  unrarsrc-6.2.5.tar.gz

New:
----
  unrarsrc-6.2.8.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ unrar.spec ++++++
--- /var/tmp/diff_new_pack.lm6hTI/_old  2023-06-24 20:13:06.731849829 +0200
+++ /var/tmp/diff_new_pack.lm6hTI/_new  2023-06-24 20:13:06.739849876 +0200
@@ -18,9 +18,9 @@
 
 # majorversion should match the major version number.
 %define majorversion 6
-%define libsuffix 6_2_5
+%define libsuffix 6_2_8
 Name:           unrar
-Version:        6.2.5
+Version:        6.2.8
 Release:        0
 Summary:        A program to extract, test, and view RAR archives
 License:        NonFree

++++++ baselibs.conf ++++++
--- /var/tmp/diff_new_pack.lm6hTI/_old  2023-06-24 20:13:06.799850231 +0200
+++ /var/tmp/diff_new_pack.lm6hTI/_new  2023-06-24 20:13:06.807850278 +0200
@@ -1,2 +1,2 @@
-libunrar6_2_5
+libunrar6_2_8
 

++++++ soname.patch ++++++
--- /var/tmp/diff_new_pack.lm6hTI/_old  2023-06-24 20:13:06.819850349 +0200
+++ /var/tmp/diff_new_pack.lm6hTI/_new  2023-06-24 20:13:06.823850372 +0200
@@ -4,7 +4,7 @@
 +++ unrar/makefile
 @@ -157,7 +157,7 @@ lib:       WHAT=RARDLL
  lib:  CXXFLAGS+=$(LIBFLAGS)
- lib:  clean $(OBJECTS) $(LIB_OBJ)
+ lib:  $(OBJECTS) $(LIB_OBJ)
        @rm -f libunrar.*
 -      $(LINK) -shared -o libunrar.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ)
 +      $(LINK) -shared -Wl,-soname,libunrar.so.$(libversion) -o 
libunrar.so.$(libversion) $(LDFLAGS) $(OBJECTS) $(LIB_OBJ)

++++++ unrarsrc-6.2.5.tar.gz -> unrarsrc-6.2.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/archive.hpp new/unrar/archive.hpp
--- old/unrar/archive.hpp       2023-01-24 17:25:30.000000000 +0100
+++ new/unrar/archive.hpp       2023-05-29 18:05:16.000000000 +0200
@@ -107,7 +107,6 @@
     FileHeader SubHead;
     CommentHeader CommHead;
     ProtectHeader ProtectHead;
-    UnixOwnersHeader UOHead;
     EAHeader EAHead;
     StreamHeader StreamHead;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/arcread.cpp new/unrar/arcread.cpp
--- old/unrar/arcread.cpp       2023-01-24 17:25:30.000000000 +0100
+++ new/unrar/arcread.cpp       2023-05-29 18:05:16.000000000 +0200
@@ -254,7 +254,11 @@
         hd->SplitAfter=(hd->Flags & LHD_SPLIT_AFTER)!=0;
         hd->Encrypted=(hd->Flags & LHD_PASSWORD)!=0;
         hd->SaltSet=(hd->Flags & LHD_SALT)!=0;
+        
+        // RAR versions earlier than 2.0 do not set the solid flag
+        // in file header. They use only a global solid archive flag.
         hd->Solid=FileBlock && (hd->Flags & LHD_SOLID)!=0;
+
         hd->SubBlock=!FileBlock && (hd->Flags & LHD_SOLID)!=0;
         hd->Dir=(hd->Flags & LHD_WINDOWMASK)==LHD_DIRECTORY;
         hd->WinSize=hd->Dir ? 0:0x10000<<((hd->Flags & LHD_WINDOWMASK)>>5);
@@ -472,19 +476,6 @@
       SubBlockHead.Level=Raw.Get1();
       switch(SubBlockHead.SubType)
       {
-        case UO_HEAD:
-          *(SubBlockHeader *)&UOHead=SubBlockHead;
-          UOHead.OwnerNameSize=Raw.Get2();
-          UOHead.GroupNameSize=Raw.Get2();
-          if (UOHead.OwnerNameSize>=ASIZE(UOHead.OwnerName))
-            UOHead.OwnerNameSize=ASIZE(UOHead.OwnerName)-1;
-          if (UOHead.GroupNameSize>=ASIZE(UOHead.GroupName))
-            UOHead.GroupNameSize=ASIZE(UOHead.GroupName)-1;
-          Raw.GetB(UOHead.OwnerName,UOHead.OwnerNameSize);
-          Raw.GetB(UOHead.GroupName,UOHead.GroupNameSize);
-          UOHead.OwnerName[UOHead.OwnerNameSize]=0;
-          UOHead.GroupName[UOHead.GroupNameSize]=0;
-          break;
         case NTACL_HEAD:
           *(SubBlockHeader *)&EAHead=SubBlockHead;
           EAHead.UnpSize=Raw.Get4();
@@ -516,8 +507,12 @@
   ushort HeaderCRC=Raw.GetCRC15(false);
 
   // Old AV header does not have header CRC properly set.
+  // Old Unix owners header didn't include string fields into header size,
+  // but included them into CRC, so it couldn't be verified with generic
+  // approach here.
   if (ShortBlock.HeadCRC!=HeaderCRC && ShortBlock.HeaderType!=HEAD3_SIGN &&
-      ShortBlock.HeaderType!=HEAD3_AV)
+      ShortBlock.HeaderType!=HEAD3_AV && 
+      (ShortBlock.HeaderType!=HEAD3_OLDSERVICE || 
SubBlockHead.SubType!=UO_HEAD))
   {
     bool Recovered=false;
     if (ShortBlock.HeaderType==HEAD_ENDARC && EndArcHead.RevSpace)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/dll.rc new/unrar/dll.rc
--- old/unrar/dll.rc    2023-01-24 17:12:32.000000000 +0100
+++ new/unrar/dll.rc    2023-05-29 18:02:08.000000000 +0200
@@ -2,8 +2,8 @@
 #include <commctrl.h>
 
 VS_VERSION_INFO VERSIONINFO
-FILEVERSION 6, 21, 1, 755
-PRODUCTVERSION 6, 21, 1, 755
+FILEVERSION 6, 22, 100, 880
+PRODUCTVERSION 6, 22, 100, 880
 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", "6.21.1\0"
-      VALUE "ProductVersion", "6.21.1\0"
+      VALUE "FileVersion", "6.22.0\0"
+      VALUE "ProductVersion", "6.22.0\0"
       VALUE "LegalCopyright", "Copyright © Alexander Roshal 1993-2023\0"
       VALUE "OriginalFilename", "Unrar.dll\0"
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/extinfo.cpp new/unrar/extinfo.cpp
--- old/unrar/extinfo.cpp       2023-01-24 17:25:30.000000000 +0100
+++ new/unrar/extinfo.cpp       2023-05-29 18:05:16.000000000 +0200
@@ -21,17 +21,11 @@
 #ifndef SFX_MODULE
 void SetExtraInfo20(CommandData *Cmd,Archive &Arc,wchar *Name)
 {
+#ifdef _WIN_ALL
   if (Cmd->Test)
     return;
   switch(Arc.SubBlockHead.SubType)
   {
-#ifdef _UNIX
-    case UO_HEAD:
-      if (Cmd->ProcessOwners)
-        ExtractUnixOwner20(Arc,Name);
-      break;
-#endif
-#ifdef _WIN_ALL
     case NTACL_HEAD:
       if (Cmd->ProcessOwners)
         ExtractACL20(Arc,Name);
@@ -39,8 +33,8 @@
     case STREAM_HEAD:
       ExtractStreams20(Arc,Name);
       break;
-#endif
   }
+#endif
 }
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/extract.cpp new/unrar/extract.cpp
--- old/unrar/extract.cpp       2023-01-24 17:25:30.000000000 +0100
+++ new/unrar/extract.cpp       2023-05-29 18:05:16.000000000 +0200
@@ -38,13 +38,13 @@
 
 CmdExtract::~CmdExtract()
 {
-  ReleaseAnalyzeData();
+  FreeAnalyzeData();
   delete Unp;
   delete Analyze;
 }
 
 
-void CmdExtract::ReleaseAnalyzeData()
+void CmdExtract::FreeAnalyzeData()
 {
   for (size_t I=0;I<RefList.Size();I++)
   {
@@ -806,6 +806,11 @@
             {
               bool UpLink;
               LinkSuccess=ExtractSymlink(Cmd,DataIO,Arc,DestFileName,UpLink);
+
+              // Unix symlink can have its own owner data.
+              if (LinkSuccess)
+                SetFileHeaderExtra(Cmd,Arc,DestFileName);
+              
               ConvertSymlinkPaths|=LinkSuccess && UpLink;
 
               // We do not actually need to reset the cache here if we cache
@@ -846,6 +851,7 @@
             Unp->Init(Arc.FileHead.WinSize,Arc.FileHead.Solid);
             Unp->SetDestSize(Arc.FileHead.UnpSize);
 #ifndef SFX_MODULE
+            // RAR 1.3 - 1.5 archives do not set per file solid flag.
             if (Arc.Format!=RARFMT50 && Arc.FileHead.UnpVer<=15)
               Unp->DoUnpack(15,FileCount>1 && Arc.Solid);
             else
@@ -1466,7 +1472,7 @@
 // 
 void CmdExtract::AnalyzeArchive(const wchar *ArcName,bool Volume,bool 
NewNumbering)
 {
-  ReleaseAnalyzeData(); // If processing non-first archive in multiple 
archives set.
+  FreeAnalyzeData(); // If processing non-first archive in multiple archives 
set.
 
   wchar *ArgName=Cmd->FileArgs.GetString();
   Cmd->FileArgs.Rewind();
@@ -1481,10 +1487,16 @@
     wcsncpyz(NextName,ArcName,ASIZE(NextName));
   
   bool MatchFound=false;
-  bool FirstVolume=true;
   bool PrevMatched=false;
   bool OpenNext=false;
 
+  bool FirstVolume=true;
+  
+  // We shall set FirstFile once for all volumes and not for each volume.
+  // So we do not reuse the outdated Analyze->StartPos from previous volume
+  // if extracted file resides completely in the beginning of current one.
+  bool FirstFile=true;
+
   while (true)
   {
     Archive Arc(Cmd);
@@ -1502,7 +1514,6 @@
     }
 
     OpenNext=false;
-    bool FirstFile=true;
     while (Arc.ReadHeader()>0)
     {
       Wait();
@@ -1515,18 +1526,32 @@
       }
       if (HeaderType==HEAD_FILE)
       {
+        if ((Arc.Format==RARFMT14 || Arc.Format==RARFMT15) && 
Arc.FileHead.UnpVer<=15)
+        {
+          // RAR versions earlier than 2.0 do not set per file solid flag.
+          // They have only the global archive solid flag, so we can't
+          // reliably analyze them here.
+          OpenNext=false;
+          break;
+        }
+
         if (!Arc.FileHead.SplitBefore)
         {
           if (!MatchFound && !Arc.FileHead.Solid) // Can start extraction from 
here.
           {
             // We would gain nothing and unnecessarily complicate extraction
-            // by setting these values for first volume or first archived file.
+            // if we set StartName for first volume or StartPos for first
+            // archived file.
             if (!FirstVolume)
               wcsncpyz(Analyze->StartName,NextName,ASIZE(Analyze->StartName));
+
+            // We shall set FirstFile once for all volumes for this code
+            // to work properly. Alternatively we could append 
+            // "|| Analyze->StartPos!=0" to the condition, so we do not reuse
+            // the outdated Analyze->StartPos value from previous volume.
             if (!FirstFile)
               Analyze->StartPos=Arc.CurBlockPos;
           }
-          FirstFile=false;
 
           if 
(Cmd->IsProcessFile(Arc.FileHead,NULL,MATCH_WILDSUBPATH,0,NULL,0)!=0)
           {
@@ -1571,16 +1596,18 @@
           {
             if (PrevMatched) // First non-matched item after matched.
             {
-              // We would gain nothing and unnecessarily complicate extraction
-              // by setting these values for first volume or first archived 
file.
+              // We would perform the unnecessarily string comparison
+              // when extracting if we set this value for first volume
+              // or non-volume archive.
               if (!FirstVolume)
                 wcsncpyz(Analyze->EndName,NextName,ASIZE(Analyze->EndName));
-              if (!FirstFile)
-                Analyze->EndPos=Arc.CurBlockPos;
+              Analyze->EndPos=Arc.CurBlockPos;
             }
             PrevMatched=false;
           }
         }
+
+        FirstFile=false;
         if (Arc.FileHead.SplitAfter)
         {
           OpenNext=true; // Allow open next volume.
@@ -1595,6 +1622,12 @@
     {
       NextVolumeName(NextName,ASIZE(NextName),!Arc.NewNumbering);
       FirstVolume=false;
+
+      // Needed for multivolume archives. Added in case some 'break'
+      // will quit early from loop above, so we do not set it in the loop.
+      // Now it can happen for hypothetical archive without file records
+      // and with HEAD_ENDARC record.
+      FirstFile=false;
     }
     else
       break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/extract.hpp new/unrar/extract.hpp
--- old/unrar/extract.hpp       2023-01-24 17:25:30.000000000 +0100
+++ new/unrar/extract.hpp       2023-05-29 18:05:16.000000000 +0200
@@ -24,7 +24,7 @@
 
     bool ArcAnalyzed;
 
-    void ReleaseAnalyzeData();
+    void FreeAnalyzeData();
     EXTRACT_ARC_CODE ExtractArchive();
     bool ExtractFileCopy(File &New,wchar *ArcName,const wchar *RedirName,wchar 
*NameNew,wchar *NameExisting,size_t NameExistingSize,int64 UnpSize);
     void ExtrPrepareName(Archive &Arc,const wchar *ArcFileName,wchar 
*DestName,size_t DestSize);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/headers.hpp new/unrar/headers.hpp
--- old/unrar/headers.hpp       2023-01-24 17:25:31.000000000 +0100
+++ new/unrar/headers.hpp       2023-05-29 18:05:17.000000000 +0200
@@ -11,7 +11,6 @@
 #define  SIZEOF_SUBBLOCKHEAD    14
 #define  SIZEOF_COMMHEAD        13
 #define  SIZEOF_PROTECTHEAD     26
-#define  SIZEOF_UOHEAD          18
 #define  SIZEOF_STREAMHEAD      26
 
 #define  VER_PACK               29U
@@ -325,16 +324,6 @@
 };
 
 
-struct UnixOwnersHeader:SubBlockHeader
-{
-  ushort OwnerNameSize;
-  ushort GroupNameSize;
-/* dummy */
-  char OwnerName[256];
-  char GroupName[256];
-};
-
-
 struct EAHeader:SubBlockHeader
 {
   uint UnpSize;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/makefile new/unrar/makefile
--- old/unrar/makefile  2022-10-24 17:36:02.000000000 +0200
+++ new/unrar/makefile  2023-02-06 11:31:30.000000000 +0100
@@ -142,20 +142,23 @@
        @rm -f $(OBJECTS) $(UNRAR_OBJ) $(LIB_OBJ)
        @rm -f unrar libunrar.*
 
-unrar: clean $(OBJECTS) $(UNRAR_OBJ)
+# We removed 'clean' from dependencies, because it prevented parallel
+# 'make -Jn' builds.
+
+unrar: $(OBJECTS) $(UNRAR_OBJ)
        @rm -f unrar
        $(LINK) -o unrar $(LDFLAGS) $(OBJECTS) $(UNRAR_OBJ) $(LIBS)     
        $(STRIP) unrar
 
 sfx:   WHAT=SFX_MODULE
-sfx:   clean $(OBJECTS)
+sfx:   $(OBJECTS)
        @rm -f default.sfx
        $(LINK) -o default.sfx $(LDFLAGS) $(OBJECTS)
        $(STRIP) default.sfx
 
 lib:   WHAT=RARDLL
 lib:   CXXFLAGS+=$(LIBFLAGS)
-lib:   clean $(OBJECTS) $(LIB_OBJ)
+lib:   $(OBJECTS) $(LIB_OBJ)
        @rm -f libunrar.*
        $(LINK) -shared -o libunrar.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ)
        $(AR) rcs libunrar.a $(OBJECTS) $(LIB_OBJ)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/pathfn.cpp new/unrar/pathfn.cpp
--- old/unrar/pathfn.cpp        2023-01-24 17:25:31.000000000 +0100
+++ new/unrar/pathfn.cpp        2023-05-29 18:05:17.000000000 +0200
@@ -428,50 +428,39 @@
 
 bool IsNameUsable(const wchar *Name)
 {
-#ifndef _UNIX
-  if (Name[0] && Name[1] && wcschr(Name+2,':')!=NULL)
+  // We were asked to apply Windows-like conversion in Linux in case
+  // files are unpacked to Windows share. This code is invoked only
+  // if file failed to be created, so it doesn't affect extraction
+  // of Unix compatible names to native Unix drives.
+#ifdef _UNIX
+  // Windows shares in Unix do not allow the drive letter,
+  // so unlike Windows version, we check all characters here.
+  if (wcschr(Name,':')!=NULL)
     return false;
+#else
+  if (Name[0]!=0 && Name[1]!=0 && wcschr(Name+2,':')!=NULL)
+    return false;
+#endif
   for (const wchar *s=Name;*s!=0;s++)
   {
     if ((uint)*s<32)
       return false;
+
+     // It is for Windows shares in Unix. We can create such names in Windows.
+#ifdef _UNIX
+    // No spaces or dots before the path separator are allowed in Windows
+    // shares. But they are allowed and automtically removed at the end of
+    // file or folder name, so it is useless to replace them here.
+    // Since such files or folders are created successfully, a supposed
+    // conversion here would never be invoked.
     if ((*s==' ' || *s=='.') && IsPathDiv(s[1]))
       return false;
-  }
 #endif
+  }
   return *Name!=0 && wcspbrk(Name,L"?*<>|\"")==NULL;
 }
 
 
-void MakeNameUsable(char *Name,bool Extended)
-{
-#ifdef _WIN_ALL
-  // In Windows we also need to convert characters not defined in current
-  // code page. This double conversion changes them to '?', which is
-  // catched by code below.
-  size_t NameLength=strlen(Name);
-  wchar NameW[NM];
-  CharToWide(Name,NameW,ASIZE(NameW));
-  WideToChar(NameW,Name,NameLength+1);
-  Name[NameLength]=0;
-#endif
-  for (char *s=Name;*s!=0;s=charnext(s))
-  {
-    if (strchr(Extended ? "?*<>|\"":"?*",*s)!=NULL || Extended && (byte)*s<32)
-      *s='_';
-#ifdef _EMX
-    if (*s=='=')
-      *s='_';
-#endif
-#ifndef _UNIX
-    if (s-Name>1 && *s==':')
-      *s='_';
-    // Remove ' ' and '.' before path separator, but allow .\ and ..\.
-    if ((*s==' ' || *s=='.' && s>Name && !IsPathDiv(s[-1]) && s[-1]!='.') && 
IsPathDiv(s[1]))
-      *s='_';
-#endif
-  }
-}
 
 
 void MakeNameUsable(wchar *Name,bool Extended)
@@ -480,7 +469,27 @@
   {
     if (wcschr(Extended ? L"?*<>|\"":L"?*",*s)!=NULL || Extended && 
(uint)*s<32)
       *s='_';
-#ifndef _UNIX
+#ifdef _UNIX
+    // We were asked to apply Windows-like conversion in Linux in case
+    // files are unpacked to Windows share. This code is invoked only
+    // if file failed to be created, so it doesn't affect extraction
+    // of Unix compatible names to native Unix drives.
+    if (Extended)
+    {
+      // Windows shares in Unix do not allow the drive letter,
+      // so unlike Windows version, we check all characters here.
+      if (*s==':')
+        *s='_';
+
+      // No spaces or dots before the path separator are allowed on Windows
+      // shares. But they are allowed and automtically removed at the end of
+      // file or folder name, so it is useless to replace them here.
+      // Since such files or folders are created successfully, a supposed
+      // conversion here would never be invoked.
+      if ((*s==' ' || *s=='.') && IsPathDiv(s[1]))
+        *s='_';
+    }
+#else
     if (s-Name>1 && *s==':')
       *s='_';
 #if 0  // We already can create such files.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/pathfn.hpp new/unrar/pathfn.hpp
--- old/unrar/pathfn.hpp        2023-01-24 17:25:31.000000000 +0100
+++ new/unrar/pathfn.hpp        2023-05-29 18:05:17.000000000 +0200
@@ -29,7 +29,6 @@
 wchar* GetVolNumPart(const wchar *ArcName);
 void NextVolumeName(wchar *ArcName,uint MaxLength,bool OldNumbering);
 bool IsNameUsable(const wchar *Name);
-void MakeNameUsable(char *Name,bool Extended);
 void MakeNameUsable(wchar *Name,bool Extended);
 
 void UnixSlashToDos(const char *SrcName,char *DestName,size_t MaxLength);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/uiconsole.cpp new/unrar/uiconsole.cpp
--- old/unrar/uiconsole.cpp     2023-01-24 17:25:32.000000000 +0100
+++ new/unrar/uiconsole.cpp     2023-05-29 18:05:17.000000000 +0200
@@ -183,6 +183,7 @@
       Log(NULL,St(MNeedAdmin));
       break;
     case UIERROR_ARCBROKEN:
+      mprintf(L"\n"); // So it is not merged with preceding 
UIERROR_HEADERBROKEN.
       Log(Str[0],St(MErrBrokenArc));
       break;
     case UIERROR_HEADERBROKEN:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/uowners.cpp new/unrar/uowners.cpp
--- old/unrar/uowners.cpp       2023-01-24 17:25:32.000000000 +0100
+++ new/unrar/uowners.cpp       2023-05-29 18:05:18.000000000 +0200
@@ -1,56 +1,12 @@
 
 
-void ExtractUnixOwner20(Archive &Arc,const wchar *FileName)
+void ExtractUnixOwner30(Archive &Arc,const wchar *FileName)
 {
   char NameA[NM];
   WideToChar(FileName,NameA,ASIZE(NameA));
 
-  if (Arc.BrokenHeader)
-  {
-    uiMsg(UIERROR_UOWNERBROKEN,Arc.FileName,FileName);
-    ErrHandler.SetErrorCode(RARX_CRC);
-    return;
-  }
-
-  struct passwd *pw;
-  errno=0; // Required by getpwnam specification if we need to check errno.
-  if ((pw=getpwnam(Arc.UOHead.OwnerName))==NULL)
-  {
-    uiMsg(UIERROR_UOWNERGETOWNERID,Arc.FileName,GetWide(Arc.UOHead.OwnerName));
-    ErrHandler.SysErrMsg();
-    ErrHandler.SetErrorCode(RARX_WARNING);
+  if (memchr(&Arc.SubHead.SubData[0],0,Arc.SubHead.SubData.Size())==NULL)
     return;
-  }
-  uid_t OwnerID=pw->pw_uid;
-
-  struct group *gr;
-  errno=0; // Required by getgrnam specification if we need to check errno.
-  if ((gr=getgrnam(Arc.UOHead.GroupName))==NULL)
-  {
-    uiMsg(UIERROR_UOWNERGETGROUPID,Arc.FileName,GetWide(Arc.UOHead.GroupName));
-    ErrHandler.SysErrMsg();
-    ErrHandler.SetErrorCode(RARX_CRC);
-    return;
-  }
-  uint Attr=GetFileAttr(FileName);
-  gid_t GroupID=gr->gr_gid;
-#if defined(SAVE_LINKS) && !defined(_APPLE)
-  if (lchown(NameA,OwnerID,GroupID)!=0)
-#else
-  if (chown(NameA,OwnerID,GroupID)!=0)
-#endif
-  {
-    uiMsg(UIERROR_UOWNERSET,Arc.FileName,FileName);
-    ErrHandler.SetErrorCode(RARX_CREATE);
-  }
-  SetFileAttr(FileName,Attr);
-}
-
-
-void ExtractUnixOwner30(Archive &Arc,const wchar *FileName)
-{
-  char NameA[NM];
-  WideToChar(FileName,NameA,ASIZE(NameA));
 
   char *OwnerName=(char *)&Arc.SubHead.SubData[0];
   int OwnerSize=strlen(OwnerName)+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/version.hpp new/unrar/version.hpp
--- old/unrar/version.hpp       2023-01-24 17:25:32.000000000 +0100
+++ new/unrar/version.hpp       2023-05-29 18:05:18.000000000 +0200
@@ -1,6 +1,6 @@
 #define RARVER_MAJOR     6
-#define RARVER_MINOR    21
-#define RARVER_BETA      1
-#define RARVER_DAY      24
-#define RARVER_MONTH     1
+#define RARVER_MINOR    22
+#define RARVER_BETA      0
+#define RARVER_DAY      29
+#define RARVER_MONTH     5
 #define RARVER_YEAR   2023
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/win32lnk.cpp new/unrar/win32lnk.cpp
--- old/unrar/win32lnk.cpp      2023-01-24 17:25:32.000000000 +0100
+++ new/unrar/win32lnk.cpp      2023-05-29 18:05:18.000000000 +0200
@@ -40,7 +40,7 @@
     PrivSet=true;
   }
 
-  const DWORD BufSize=sizeof(REPARSE_DATA_BUFFER)+2*NM+1024;
+  const DWORD BufSize=sizeof(REPARSE_DATA_BUFFER)+2*NM*sizeof(wchar)+1024;
   Array<byte> Buf(BufSize);
   REPARSE_DATA_BUFFER *rdb=(REPARSE_DATA_BUFFER *)&Buf[0];
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/win32stm.cpp new/unrar/win32stm.cpp
--- old/unrar/win32stm.cpp      2023-01-24 17:25:32.000000000 +0100
+++ new/unrar/win32stm.cpp      2023-05-29 18:05:18.000000000 +0200
@@ -39,6 +39,7 @@
   CharToWide(Arc.StreamHead.StreamName,StoredName,ASIZE(StoredName));
   ConvertPath(StoredName+1,StoredName+1,ASIZE(StoredName)-1);
 
+
   wcsncatz(StreamName,StoredName,ASIZE(StreamName));
 
   FindData fd;

Reply via email to