ports/105832: [patch] make archivers/unzoo more FreeBSD 4.x friendly

Eugene Grosbein eugen at grosbein.pp.ru
Fri Nov 24 18:20:12 UTC 2006


>Number:         105832
>Category:       ports
>Synopsis:       [patch] make archivers/unzoo more FreeBSD 4.x friendly
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Fri Nov 24 18:20:05 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Eugene Grosbein
>Release:        FreeBSD 4.11-STABLE i386
>Organization:
Svyaz Service JSC
>Environment:
System: FreeBSD hq.svzserv.kemerovo.su 4.11-STABLE FreeBSD 4.11-STABLE #0: Mon Oct 16 18:31:57 KRAST 2006 root at hq.svzserv.kemerovo.su:/usr/obj/usr/src/sys/MAIN i386

>Description:
	Recent security update of archivers/unzoo introduced
	dependency on gcc 3.2+. Meantime, this port is a dependency
	of clamav antivirus widely used to detect viruses in SMTP traffic.
	This requires all FreeBSD 4.x users to build new gcc
	for very small reason. It seems that this overhead may be
	skipped with next small patch that does nothing other than
	moves 'found_trav' variable initialisations to the start
	of code blocks.

>How-To-Repeat:
	N/A, see description.

>Fix:

	This removes dependency on gcc 3.2+

diff -urN unzoo.orig/Makefile unzoo/Makefile
--- unzoo.orig/Makefile	Sat Nov 25 00:46:18 2006
+++ unzoo/Makefile	Sat Nov 25 01:02:20 2006
@@ -7,7 +7,7 @@
 
 PORTNAME=	unzoo
 PORTVERSION=	4.4
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	archivers
 MASTER_SITES=	${MASTER_SITE_DEBIAN_POOL}
 DISTNAME=	${PORTNAME}_${PORTVERSION}.orig
@@ -18,8 +18,6 @@
 
 MAINTAINER=	ehaupt at FreeBSD.org
 COMMENT=	A zoo archive extractor
-
-USE_GCC=	3.2+
 
 EXTRA_DEFINES=	-DSYS_IS_UNIX -DSYS_HAS_MKDIR
 
diff -urN unzoo.orig/files/patch-unzoo.c unzoo/files/patch-unzoo.c
--- unzoo.orig/files/patch-unzoo.c	Thu Jan  1 07:00:00 1970
+++ unzoo/files/patch-unzoo.c	Sat Nov 25 01:00:45 2006
@@ -0,0 +1,48 @@
+--- unzoo.c.orig	Sat Nov 25 00:53:57 2006
++++ unzoo.c	Sat Nov 25 01:00:42 2006
+@@ -2590,20 +2590,20 @@
+             /* but only if the user did not request otherwise              */
+ 
+             /* building the universal path of this member                  */
++            int found_trav = 0;
+             char patu [sizeof(Entry.diru) + sizeof(Entry.namu) + 2];
+             strcpy( patu, Entry.diru );
+             if ( strlen(patu) && patu[strlen(patu)-1] != '/') strcat( patu, "/" );
+             strcat( patu, (Entry.lnamu ? Entry.namu : Entry.nams) );
+ 
+-            int found_trav = 0;
+ 
+             if ( strstr( patu, "/../" )) {
+-                found_trav = 1;
+ 
+                 /* remove "/../" from the path                             */
+                 char tmp [sizeof(patu)];
+                 char *p;
+                 char *q;
++                found_trav = 1;
+                 memset(tmp, 0, sizeof(tmp));
+                 q = patu;
+ 
+@@ -2625,10 +2625,10 @@
+                 printf("unzoo: skipped \"/../\" path component(s) in '%s'\n", Entry.patl);
+             }
+             if ( *patu == '/' && !strlen( pre ) ) {
+-                found_trav = 1;
+ 
+                 char *p = malloc(sizeof(patu));
+                 char *q = p;
++                found_trav = 1;
+                 memset(p, 0, sizeof(patu));
+                 strcpy(p, patu);
+                 while ( q[0] == '/' ) q++;
+@@ -2638,9 +2638,9 @@
+                 printf("unzoo: skipped root directory path component in '%s'\n", patl);
+             }
+             if ( !strncmp( patu, "../", 3 )) {
+-                found_trav = 1;
+ 
+                 char tmp [sizeof(patu)];
++                found_trav = 1;
+                 memset(tmp, 0, sizeof(tmp));
+                 strcpy(tmp, patu + 3);
+                 strcpy(patu, tmp);


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list