From owner-svn-ports-head@FreeBSD.ORG Tue Jan 7 06:02:27 2014 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6EE03A20; Tue, 7 Jan 2014 06:02:27 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4E86D1474; Tue, 7 Jan 2014 06:02:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0762RZZ050996; Tue, 7 Jan 2014 06:02:27 GMT (envelope-from dinoex@svn.freebsd.org) Received: (from dinoex@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0762Q7N050991; Tue, 7 Jan 2014 06:02:26 GMT (envelope-from dinoex@svn.freebsd.org) Message-Id: <201401070602.s0762Q7N050991@svn.freebsd.org> From: Dirk Meyer Date: Tue, 7 Jan 2014 06:02:26 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r338974 - in head/sysutils/zidrav: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 06:02:27 -0000 Author: dinoex Date: Tue Jan 7 06:02:26 2014 New Revision: 338974 URL: http://svnweb.freebsd.org/changeset/ports/338974 Log: - fix crc problems on 64bit - fix crc problems on big endian systems Added: head/sysutils/zidrav/files/patch-core.cpp (contents, props changed) head/sysutils/zidrav/files/patch-core.h (contents, props changed) Modified: head/sysutils/zidrav/Makefile Modified: head/sysutils/zidrav/Makefile ============================================================================== --- head/sysutils/zidrav/Makefile Tue Jan 7 05:38:26 2014 (r338973) +++ head/sysutils/zidrav/Makefile Tue Jan 7 06:02:26 2014 (r338974) @@ -3,6 +3,7 @@ PORTNAME= zidrav PORTVERSION= 1.2.0 +PORTREVISION= 1 CATEGORIES= sysutils MASTER_SITES= SF/${PORTNAME}/${PORTNAME}4unix/${PORTVERSION} DISTNAME= zidrav4unix-${PORTVERSION} @@ -19,4 +20,18 @@ do-install: ${INSTALL_PROGRAM} ${WRKSRC}/zidrav ${STAGEDIR}${PREFIX}/bin/ ${INSTALL_MAN} ${WRKSRC}/zidrav.1 ${STAGEDIR}${MANPREFIX}/man/man1/ +.include + +.if ${ARCH} == "i386" +CFLAGS+= -Dcrc32_type=long +.else +CFLAGS+= -Dcrc32_type=int +.endif + +.if ${ARCH} == "amd64" || ${ARCH} == "arm" || ${ARCH} == "i386" || ${ARCH} == "ia64" +.else +# mips*eb, powerpc, powerpc64 and sparc +CFLAGS+= -DCPU_BIGENDIAN +.endif + .include Added: head/sysutils/zidrav/files/patch-core.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sysutils/zidrav/files/patch-core.cpp Tue Jan 7 06:02:26 2014 (r338974) @@ -0,0 +1,105 @@ +--- core.cpp.orig 2005-05-21 22:16:50.000000000 +0200 ++++ core.cpp 2014-01-07 06:41:30.000000000 +0100 +@@ -38,7 +38,7 @@ + + void be_write32le(iostream &output, char *buf) + { +- int data; ++ int data = 0; + data = *(int*)buf; + + data = SwapBO32(data); +@@ -48,7 +48,7 @@ + + void be_read32le(istream &input, char *buf) + { +- int data; ++ int data = 0; + input.read((char *)&data, 4); + + data = SwapBO32(data); +@@ -59,7 +59,7 @@ + + char *buffer; + int i; +- long crc; ++ crc32_type crc; + short oldprc = 0; + + output.write( ZC, 8 ); +@@ -105,11 +105,11 @@ + + void MakePatchCore( istream &cdti, istream &vstr, iostream &output, int cdtlen, int vstrlen, int * efound) { + +- long filesize; +- long blocksize; ++ long filesize = 0; // reset all 64bit ++ long blocksize = 0; // reset all 64bit + +- long crc; +- long cdtcrc; ++ crc32_type crc; ++ crc32_type cdtcrc = 0; // reset all 64bit + + long curbs; + +@@ -207,12 +207,12 @@ + + void ApplyPatchCore( istream &cdpi, iostream &pstr, int cdplen, int pstrlen) { + +- long filesize; +- long blocksize; ++ long filesize = 0; // reset all 64bit ++ long blocksize = 0; // reset all 64bit + + long curbs = 0; + +- long offset; ++ long offset = 0; // reset all 64bit + + char *buffer = NULL; + +@@ -266,7 +266,8 @@ + + char minibuff[9]; + +- long crc; ++ crc32_type crc; ++ crc32_type filecrc = 0; // reset all 64bit + + buffer = new char[10]; + +@@ -317,12 +318,12 @@ + } + + input.seekg( 0 ); // go to the beginning +- input.read( buffer, datalen ); // and pull it all ++ input.read( buffer, datalen - 4 ); // and pull it all ++ read32le(input, (char *)&filecrc); + + CreateChecksum( buffer, datalen - 4, &crc ); + +- if( crc != int32tole(*(int *)&buffer[ datalen - 4 ]) ) { +- delete [] buffer; ++ if( crc != filecrc ) { + switch(emsg) + { + case IDS_UPT_INVCDT: +@@ -342,7 +343,7 @@ + void MakeOverallChecksum( iostream &st, long size ) { + + char *buffer; +- long crc; ++ crc32_type crc; + + // FIXME: trying to load whole file... again... :( + buffer = new char[size]; +@@ -367,7 +368,7 @@ + #define DO8( buffer ) DO4( buffer ); DO4( buffer ); + #define DO16( buffer ) DO8( buffer ); DO8( buffer ); + +-void CreateChecksum( char *buffer, long size, long *crc ) { ++void CreateChecksum( char *buffer, long size, crc32_type *crc ) { + + *crc = 0; + Added: head/sysutils/zidrav/files/patch-core.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sysutils/zidrav/files/patch-core.h Tue Jan 7 06:02:26 2014 (r338974) @@ -0,0 +1,20 @@ +--- core.h.orig 2005-05-19 22:58:40.000000000 +0200 ++++ core.h 2014-01-07 06:40:24.000000000 +0100 +@@ -48,7 +48,7 @@ + #define QSV KSigver( ZQ, QVER ) + + +-const long crc_table[256] = { // it's just easier this way, alright? It's one K of data, I'm allowed a global if I want one ++const crc32_type crc_table[256] = { // it's just easier this way, alright? It's one K of data, I'm allowed a global if I want one + 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, + 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, + 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, +@@ -111,7 +111,6 @@ + int VerifyStream( istream &input, int datalen, int emsg, KSigver sigver ); + + void MakeOverallChecksum( iostream &st, long size ); +-void CreateChecksum( char *buffer, long size, unsigned long *crc ); +-void CreateChecksum( char *buffer, long size, signed long *crc ); ++void CreateChecksum( char *buffer, long size, crc32_type *crc ); + + #endif