Date: Sat, 25 Nov 2006 01:13:27 +0700 (KRAT) From: Eugene Grosbein <eugen@grosbein.pp.ru> To: FreeBSD-gnats-submit@FreeBSD.org Cc: ehaupt@FreeBSD.org Subject: ports/105832: [patch] make archivers/unzoo more FreeBSD 4.x friendly Message-ID: <200611241813.kAOIDRdF017539@hq.svzserv.kemerovo.su> Resent-Message-ID: <200611241820.kAOIKBMJ079876@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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@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@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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200611241813.kAOIDRdF017539>