ports/94600: Port archivers/libunrar critical error
Alex Samorukov
samm at os2.kiev.ua
Fri Mar 17 10:10:16 UTC 2006
>Number: 94600
>Category: ports
>Synopsis: Port archivers/libunrar critical error
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: maintainer-update
>Submitter-Id: current-users
>Arrival-Date: Fri Mar 17 10:10:15 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Alex Samorukov
>Release: FreeBSD 6.0-RELEASE i386
>Organization:
Shevchenko Didkovskiy and Partners
>Environment:
System: FreeBSD 6.0-RELEASE #1: Wed Feb 8 23:30:22 EET 2006
root at samm.local:/usr/obj/usr/src/sys/SAMMKRNL
>Description:
libunrar library have critical error which can cause hanging with 100% cpu load. Error was found and fixed by McMCC.
>How-To-Repeat:
1) Compile security/clamav with LIBUNRAR support
2) download file http://mcmcc.bat.ru/clamav/hz.rar
3) Check file hz.rar using clamdscan
clamd will hanf with 100% cpu load.
>Fix:
diff -u -r --new-file libunrar.ori/Makefile libunrar/Makefile
--- libunrar.ori/Makefile Fri Mar 17 11:50:39 2006
+++ libunrar/Makefile Fri Mar 17 11:54:33 2006
@@ -7,6 +7,7 @@
PORTNAME= libunrar
PORTVERSION= 3.54
+PORTREVISION= 1
CATEGORIES= archivers
MASTER_SITES= http://files2.rarlab.com/rar/ \
http://files3.rarlab.com/rar/ \
diff -u -r --new-file libunrar.ori/files/patch-dll.cpp libunrar/files/patch-dll.cpp
--- libunrar.ori/files/patch-dll.cpp Thu Jan 1 03:00:00 1970
+++ libunrar/files/patch-dll.cpp Thu Mar 16 20:20:16 2006
@@ -0,0 +1,16 @@
+diff -ruN unrar.orig/dll.cpp unrar/dll.cpp
+--- dll.cpp.orig 2005-08-03 20:34:30.000000000 +0400
++++ dll.cpp 2006-01-11 12:13:33.000000000 +0300
+@@ -271,8 +271,10 @@
+ strcpy(Data->Cmd.Command,Operation==RAR_EXTRACT ? "X":"T");
+ Data->Cmd.Test=Operation!=RAR_EXTRACT;
+ bool Repeat=false;
+- Data->Extract.ExtractCurrentFile(&Data->Cmd,Data->Arc,Data->HeaderSize,Repeat);
+-
++
++ if(Data->Extract.ExtractCurrentFile(&Data->Cmd,Data->Arc,Data->HeaderSize,Repeat) == false)
++ return (ERAR_UNKNOWN);
++
+ while (Data->Arc.ReadHeader()!=0 && Data->Arc.GetHeaderType()==NEWSUB_HEAD)
+ {
+ Data->Extract.ExtractCurrentFile(&Data->Cmd,Data->Arc,Data->HeaderSize,Repeat);
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list