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