debian/0000755000000000000000000000000011726410152007165 5ustar debian/unace-nonfree.preinst0000644000000000000000000000063711726226516013337 0ustar #!/bin/sh set -e case "$1" in install) dpkg-divert --package unace-nonfree --add --rename --divert \ /usr/bin/unace-free /usr/bin/unace dpkg-divert --package unace-nonfree --add --rename --divert \ /usr/share/man/man1/unace-free.1.gz /usr/share/man/man1/unace.1.gz ;; upgrade|abort-upgrade) ;; *) echo "preinst called with unknown argument \`$1'" >&2 exit 1 ;; esac #DEBHELPER# exit 0 debian/patches/0000755000000000000000000000000011726226516010625 5ustar debian/patches/07-fix-free-aliasing-issue.patch0000644000000000000000000001412511726226516016515 0ustar Author: Michael Karcher Description: This patch redefines how BASE_MEMORY_FreeCheck works, and avoids tons of "may break strict aliasing rules" warnings. It also removes casts on invocation. --- unace-nonfree-2.5.orig/source/apps/exe/messages/messages.c +++ unace-nonfree-2.5/source/apps/exe/messages/messages.c @@ -107,7 +107,7 @@ ULONG Bits; APPS_EXE_MESSAGES_Skip(Start - 22); - BASE_MEMORY_FreeCheck((PVOID *) &APPS_EXE_MESSAGES.MessagesBuf); + BASE_MEMORY_FreeCheck(APPS_EXE_MESSAGES.MessagesBuf); if (!(APPS_EXE_MESSAGES.MessagesBuf = (PCHAR) BASE_MEMORY_GetMem(*Size + 1))) --- unace-nonfree-2.5.orig/source/base/all/archives/read/read.c +++ unace-nonfree-2.5/source/base/all/archives/read/read.c @@ -22,8 +22,8 @@ void BASE_ARCHIVES_READ_FreeArchiveList(void) { - BASE_MEMORY_FreeCheck((PVOID *) &BASE_ARCHIVES_READ.FileData); - BASE_MEMORY_FreeCheck((PVOID *) &BASE_ARCHIVES_READ.FileNames); + BASE_MEMORY_FreeCheck(BASE_ARCHIVES_READ.FileData); + BASE_MEMORY_FreeCheck(BASE_ARCHIVES_READ.FileNames); } /*-----------------BASE_ARCHIVES_READ_GetArchiveList---------------------*/ --- unace-nonfree-2.5.orig/source/base/all/bufread/bufread.c +++ unace-nonfree-2.5/source/base/all/bufread/bufread.c @@ -134,7 +134,7 @@ void BASE_BUFREAD_Close(void) { close(BASE_BUFREAD.Handle); BASE_BUFREAD.Handle = -1; - BASE_MEMORY_FreeCheck((PVOID *) &BASE_BUFREAD.Buf); + BASE_MEMORY_FreeCheck(BASE_BUFREAD.Buf); } /*-----------------BASE_BUFREAD_Tell-------------------------------------*/ --- unace-nonfree-2.5.orig/source/base/all/dcpr/comments/comments.c +++ unace-nonfree-2.5/source/base/all/dcpr/comments/comments.c @@ -45,7 +45,7 @@ void BASE_DCPR_COMMENTS_Done(void) { if (BASE_DCPR.DoFreeReadBuf) { - BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR.ReadBuf); + BASE_MEMORY_FreeCheck(BASE_DCPR.ReadBuf); } } --- unace-nonfree-2.5.orig/source/base/all/dcpr/dcpr.c +++ unace-nonfree-2.5/source/base/all/dcpr/dcpr.c @@ -301,8 +301,8 @@ void BASE_DCPR_Done(void) { if (BASE_DCPR.IsInitialized) { - BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR.ReadBuf); - BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR_LZ77.Dictionary); + BASE_MEMORY_FreeCheck(BASE_DCPR.ReadBuf); + BASE_MEMORY_FreeCheck(BASE_DCPR_LZ77.Dictionary); BASE_DCPR.IsInitialized = 0; BASE_MEMORY_Optimize(); } --- unace-nonfree-2.5.orig/source/base/all/dcpr/pic/pic.c +++ unace-nonfree-2.5/source/base/all/dcpr/pic/pic.c @@ -137,7 +137,7 @@ void BASE_DCPR_PIC_Done(void) BASE_DCPR_PIC.Data[0] -= BASE_DCPR_PIC.Planes; BASE_DCPR_PIC.Data[1] -= BASE_DCPR_PIC.Planes; - BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR_PIC.Data[0]); - BASE_MEMORY_FreeCheck((PVOID *) &BASE_DCPR_PIC.Data[1]); + BASE_MEMORY_FreeCheck(BASE_DCPR_PIC.Data[0]); + BASE_MEMORY_FreeCheck(BASE_DCPR_PIC.Data[1]); } } --- unace-nonfree-2.5.orig/source/base/all/extract/extract.c +++ unace-nonfree-2.5/source/base/all/extract/extract.c @@ -232,10 +232,10 @@ UINT NTFSSecuritySize; { BASE_LFN_SetFileAttributes(BASE_STATE.DestinationFileName, Attr); BASE_DOSFUNCS_SetFileSecurity(BASE_STATE.DestinationFileName, NTFSSecurity); - BASE_MEMORY_FreeCheck((PVOID)&NTFSSecurity); + BASE_MEMORY_FreeCheck(NTFSSecurity); } - BASE_MEMORY_FreeCheck((PVOID *) &Buf); + BASE_MEMORY_FreeCheck(Buf); return; --- unace-nonfree-2.5.orig/source/base/all/filelist/filelist.c +++ unace-nonfree-2.5/source/base/all/filelist/filelist.c @@ -290,7 +290,7 @@ INT BufSize; if (!(BASE_FILELIST.ListFileData = (pBASE_FILELIST_FileData) BASE_MEMORY_GetMemBase2(&BufSize, 1))) { - BASE_MEMORY_FreeCheck((PVOID *) &BASE_FILELIST.List); + BASE_MEMORY_FreeCheck(BASE_FILELIST.List); return; } @@ -303,8 +303,8 @@ INT BufSize; void BASE_FILELIST_Done(void) { - BASE_MEMORY_FreeCheck((PVOID *) &BASE_FILELIST.List); - BASE_MEMORY_FreeCheck((PVOID *) &BASE_FILELIST.ListFileData); + BASE_MEMORY_FreeCheck(BASE_FILELIST.List); + BASE_MEMORY_FreeCheck(BASE_FILELIST.ListFileData); BASE_MEMORY_Optimize(); } --- unace-nonfree-2.5.orig/source/base/all/lfn/lin.c +++ unace-nonfree-2.5/source/base/all/lfn/lin.c @@ -67,7 +67,7 @@ tLFN SearchFile, } } - BASE_MEMORY_FreeCheck((PVOID*)&Env); + BASE_MEMORY_FreeCheck(Env); } } --- unace-nonfree-2.5.orig/source/base/all/memory/memory.c +++ unace-nonfree-2.5/source/base/all/memory/memory.c @@ -150,13 +150,12 @@ INT MemSize; /*-----------------BASE_MEMORY_FreeCheck---------------------------------*/ -void BASE_MEMORY_FreeCheck(PVOID *Pointer) +void BASE_MEMORY_FreeCheck_(PVOID Pointer) { - if (*Pointer) + if (Pointer) { - BASE_MEMORY.MaxAllocate += BASE_MEMORY_Size(*Pointer); - free((PVOID) (((PULONG) *Pointer) - 1)); - *Pointer = NULL; + BASE_MEMORY.MaxAllocate += BASE_MEMORY_Size(Pointer); + free((PVOID) (((PULONG) Pointer) - 1)); } } @@ -183,7 +182,7 @@ INT OldSize, } memcpy(NewPointer, OldPointer, OldSize); - BASE_MEMORY_FreeCheck(&OldPointer); + BASE_MEMORY_FreeCheck(OldPointer); if (BASE_MEMORY_MemMax() < MemMaxSize) { @@ -193,7 +192,7 @@ INT OldSize, } memcpy(OldPointer, NewPointer, OldSize); - BASE_MEMORY_FreeCheck(&NewPointer); + BASE_MEMORY_FreeCheck(NewPointer); return OldPointer; } --- unace-nonfree-2.5.orig/source/base/all/memory/memory.h +++ unace-nonfree-2.5/source/base/all/memory/memory.h @@ -32,7 +32,8 @@ PVOID BASE_MEMORY_GetMemBase2Max(PINT PVOID BASE_MEMORY_GetMemBase2PlusMax(PINT Size, INT Base, INT Maximum, INT Plus); -void BASE_MEMORY_FreeCheck(PVOID *Pointer); +void BASE_MEMORY_FreeCheck_(PVOID Pointer); +#define BASE_MEMORY_FreeCheck(ptr) do { BASE_MEMORY_FreeCheck_(ptr); ptr=0; } while(0) PVOID BASE_MEMORY_ReAlloc(PVOID OldPointer, INT NewSize); PVOID BASE_MEMORY_ReAllocSameSize(PVOID OldPointer); void BASE_MEMORY_InitAlloc(void); debian/patches/10-uninorm-signedness.patch0000644000000000000000000000463311726226516015721 0ustar Author: Michael Karcher Description: Fixes prototypes in unincore.h to match uninorm.c. --- unace-nonfree-2.5.orig/source/base/all/uninorm/unincore.h +++ unace-nonfree-2.5/source/base/all/uninorm/unincore.h @@ -3,28 +3,30 @@ * */ +typedef unsigned int uint; + /* integer string functions */ -int istrlen (int * str ); -int istrcmp (int * s1, int * s2 ); +uint istrlen (uint * str ); +uint istrcmp (uint * s1, uint * s2 ); /* unicode data accessors */ -int is_excluded (int c ); -int get_combining_class (int c ); -int get_recombined_codepoint (int c1, int c2 ); -int * get_decomposition (int * buf, int c ); +uint is_excluded (uint c ); +uint get_combining_class (uint c ); +int get_recombined_codepoint (uint c1, uint c2 ); +uint * get_decomposition (uint * buf, uint c ); /* utf en/decoding functions */ void encode_utf8(char *buf, unsigned *str); void decode_utf8(unsigned *buf, char *str); /* (de)composition functions */ -void decompose_recursive (int * buf, int c ); -void canonical_order (int * str ); -void canonical_composition (int * str ); -void canonical_decomposition (int * buf, int * str ); +void decompose_recursive (uint * buf, uint c ); +void canonical_order (uint * str ); +void canonical_composition (uint * str ); +void canonical_decomposition (uint * buf, uint * str ); /* normalization functions */ -void normalize_nfd (int * buf, int * str ); -void normalize_nfc (int * buf, int * str ); +void normalize_nfd (uint * buf, uint * str ); +void normalize_nfc (uint * buf, uint * str ); void normalize_nfd_utf8 (char * buf, char * str ); void normalize_nfc_utf8 (char * buf, char * str ); --- unace-nonfree-2.5.orig/source/base/all/uninorm/uninorm.c +++ unace-nonfree-2.5/source/base/all/uninorm/uninorm.c @@ -101,4 +101,4 @@ INT BASE_UNINORM_CP850ToUTF8NFD(UCHAR *u } } -*/ \ No newline at end of file +*/ debian/patches/03-gcc-call.patch0000644000000000000000000000252711726226516013541 0ustar Author: Fabian Greffrath Author: Mike Frysinger Description: Call C-Compiler via $(CC), consider CFLAGS, remove -static flag, drop linking against libncurses and change include dir order. Furthermore use standard env vars and remove pointless -I paths. --- unace-nonfree-2.5.orig/makefile +++ unace-nonfree-2.5/makefile @@ -14,17 +14,16 @@ PACKAGES_DIRsl = SRCSsl = $(BASIC_DIR)source SRCS = $(SRCSsl)/ +ifdef SYSINC INCLSYSDIR = //usr/include/sys INCLDIR = //usr/include - -DEFINES = -D__LINUX__ -D__unix__ -D__GCC__ -U__HAS_IO_H__ - -ifdef DEBUG -LSWITCHES = +INCLS = -I$(INCLDIR) -idirafter $(INCLSYSDIR) else -LSWITCHES = -Wl,-s +INCLS = endif +DEFINES = -D__LINUX__ -D__unix__ -D__GCC__ -U__HAS_IO_H__ + ############################################################################## all: unace @@ -47,7 +46,7 @@ UNACEEXENT_CFILES = \ $(APPS_UNACEEXE_CFILES) unace: $(UNACEEXELIN_CFILES) - gcc $(LSWITCHES) -Wl,-lncurses -static -I$(INCLDIR) -I$(INCLSYSDIR) -I$(SRCSsl) $(DEFINES) $(UNACEEXELIN_CFILES) -ggdb -o$(EXECS_DIR)unace + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(INCLS) -I$(SRCSsl) $(DEFINES) $(UNACEEXELIN_CFILES) -ggdb -o$(EXECS_DIR)unace ifndef DEBUG tar cfvz linunace25.tgz unace file_id.diz licence #sh linpack.sh debian/patches/09-utf8-filenames.patch0000644000000000000000000000176611726226516014735 0ustar Author: Michael Karcher Description: This patch makes unace use utf8 filenames on linux instead of Latin1. --- unace-nonfree-2.5.orig/source/base/all/arcblk/arcblk.c +++ unace-nonfree-2.5/source/base/all/arcblk/arcblk.c @@ -282,12 +282,8 @@ void BASE_ARCBLK_ConvertHeader32ToHea #if defined(__MACOSX__) BASE_ARCBLK.Header.File.FNAME_SIZE = BASE_UNINORM_CP850ToUTF8NFD( BASE_ARCBLK.Header.File.FNAME, BASE_ARCBLK.Header.File.FNAME_SIZE); -#elif defined(__LINUX__) - /* may not work for every linux user */ - BASE_ARCBLK.Header.File.FNAME_SIZE = BASE_UNINORM_CP850ToANSI( - BASE_ARCBLK.Header.File.FNAME, BASE_ARCBLK.Header.File.FNAME_SIZE); #elif defined(__unix__) - /* for every other unix assume UTF-8 NFC normalization */ + /* for unix, assume UTF-8 NFC normalization */ BASE_ARCBLK.Header.File.FNAME_SIZE = BASE_UNINORM_CP850ToUTF8NFC( BASE_ARCBLK.Header.File.FNAME, BASE_ARCBLK.Header.File.FNAME_SIZE); #endif debian/patches/12-cast-filetime.patch0000644000000000000000000000717411726226516014625 0ustar Author: Michael Karcher Description: Expresses access to bitfield as 32 bit variable using a union to not violate the strict aliasing rule. The code is still inherently non-portable. --- unace-nonfree-2.5.orig/source/apps/exe/acefuncs/acefuncs.c +++ unace-nonfree-2.5/source/apps/exe/acefuncs/acefuncs.c @@ -33,8 +33,10 @@ CHAR ShortStr[80], OutputStr[160]; PCHAR OutputFileName; INT I; -tBASE_DOSFUNCS_FileTime - FileTime; +union { +tBASE_DOSFUNCS_FileTime Fields; +ULONG Raw; +} FileTime; BASE_FILELIST_Init(); BASE_FILELIST_VolumeCreate(); @@ -79,7 +81,7 @@ tBASE_DOSFUNCS_FileTime APPS_EXE_CONVERT_MakeStrShorter(ShortStr, OutputFileName, 35); - *(PULONG) &FileTime = BASE_ARCBLK.Header.File.FTIME; + FileTime.Raw = BASE_ARCBLK.Header.File.FTIME; BASE_STATE.SummaryUnComprBytes += BASE_ARCBLK.Header.File.SIZE; BASE_STATE.SummaryComprBytes += BASE_ARCBLK.Header.File.PSIZE; @@ -87,8 +89,9 @@ tBASE_DOSFUNCS_FileTime sprintf( OutputStr, "%2d.%2d.%2d_%2d:%2d %c%c%s %s %4d%% %c%s", - FileTime.Day, FileTime.Month, (80 + FileTime.Year) % 100, - FileTime.Hour, FileTime.Minute, + FileTime.Fields.Day, FileTime.Fields.Month, + (80 + FileTime.Fields.Year) % 100, + FileTime.Fields.Hour, FileTime.Fields.Minute, BASE_ARCBLK.Header.File.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SPLITBEFORE ? '\x11' : ' ', BASE_ARCBLK.Header.File.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SPLITAFTER ? --- unace-nonfree-2.5.orig/source/base/all/archives/ace/ace.c +++ unace-nonfree-2.5/source/base/all/archives/ace/ace.c @@ -183,13 +183,13 @@ tLFN ArchiveFileName; break; } - BASE_ARCHIVES_READ.FileData[BASE_ARCHIVES_READ.FileNumber].Size = + BASE_ARCHIVES_READ.FileData[BASE_ARCHIVES_READ.FileNumber].Size = BASE_ARCBLK.Header.File.SIZE; - BASE_ARCHIVES_READ.FileData[BASE_ARCHIVES_READ.FileNumber].PackedSize = + BASE_ARCHIVES_READ.FileData[BASE_ARCHIVES_READ.FileNumber].PackedSize = BASE_ARCBLK.Header.File.PSIZE; - BASE_ARCHIVES_READ.FileData[BASE_ARCHIVES_READ.FileNumber].Time = + BASE_ARCHIVES_READ.FileData[BASE_ARCHIVES_READ.FileNumber].Time.Fields = BASE_DOSFUNCS_CalcFileTime(BASE_ARCBLK.Header.File.FTIME); Attributes |= --- unace-nonfree-2.5.orig/source/base/all/filelist/filelist.c +++ unace-nonfree-2.5/source/base/all/filelist/filelist.c @@ -242,7 +242,7 @@ tBASE_LFN_DBL { BASE_FILELIST.ListFileData[BASE_FILELIST.Number].Size = FileSize; - BASE_FILELIST.ListFileData[BASE_FILELIST.Number].Time = + BASE_FILELIST.ListFileData[BASE_FILELIST.Number].Time.Fields = BASE_DOSFUNCS_CalcFileTime(FileTime); if ((BASE_FILELIST.ListFileData[BASE_FILELIST.Number].Attr = Attr) @@ -397,7 +397,7 @@ tLFN PureFileName; if (BASE_PATHFUNC_WildCardCheck(ListPosition, PureFileName + AddDirLen)) { BASE_FILELIST_AddFile(FileName, FileData.Size, - *(PULONG) &FileData.Time, FileData.Attr); + FileData.Time.Raw, FileData.Attr); return; } --- unace-nonfree-2.5.orig/source/base/all/filelist/filelist.h +++ unace-nonfree-2.5/source/base/all/filelist/filelist.h @@ -31,8 +31,11 @@ typedef struct { - tBASE_DOSFUNCS_FileTime - Time; + union { + tBASE_DOSFUNCS_FileTime + Fields; + ULONG Raw; + } Time; ULONGLONG Size, PackedSize; debian/patches/11-possibly-critical.patch0000644000000000000000000000073611726226516015527 0ustar Author: Michael Karcher Description: Fixes a possible security issue by initialising a local variable. --- unace-nonfree-2.5.orig/source/base/all/dcpr/comments/comments.c +++ unace-nonfree-2.5/source/base/all/dcpr/comments/comments.c @@ -62,6 +62,8 @@ INT CommentPos, if (BASE_COMMENTS.CompressedSize) { + MatchPos = 0; + CommentPos = 0; memset(&Hash, 0, sizeof(Hash)); BASE_DCPR_COMMENTS_Init(); debian/patches/02-no-io_h.patch0000644000000000000000000000202311726226516013412 0ustar Author: Fabian Greffrath Author: Michael Karcher Description: Not every arch has , include instead. --- unace-nonfree-2.5.orig/makefile +++ unace-nonfree-2.5/makefile @@ -17,7 +17,7 @@ SRCS = $(SRCSsl)/ INCLSYSDIR = //usr/include/sys INCLDIR = //usr/include -DEFINES = -D__LINUX__ -D__unix__ -D__GCC__ -D__HAS_IO_H__ +DEFINES = -D__LINUX__ -D__unix__ -D__GCC__ -U__HAS_IO_H__ ifdef DEBUG LSWITCHES = --- unace-nonfree-2.5.orig/source/base/all/bufread/bufread.c +++ unace-nonfree-2.5/source/base/all/bufread/bufread.c @@ -3,6 +3,10 @@ #ifdef __HAS_IO_H__ #include +#else +#ifdef __unix__ + #include +#endif #endif #include --- unace-nonfree-2.5.orig/source/base/all/lfn/lfn.h +++ unace-nonfree-2.5/source/base/all/lfn/lfn.h @@ -6,6 +6,10 @@ #ifdef __HAS_IO_H__ #include +#else +#ifdef __unix__ + #include +#endif #endif #ifdef INCL_BASE_LFN_EXCLUSIVE debian/patches/14-endianness-detection.patch0000644000000000000000000000204511726226516016174 0ustar Author: Guy Martin Description: This patch make the check for endianness actually occur. Bug-Gentoo: https://bugs.gentoo.org/show_bug.cgi?id=222301 Origin: https://bugs.gentoo.org/attachment.cgi?id=241251 --- unace-nonfree-2.5.orig/source/base/all/all.h +++ unace-nonfree-2.5/source/base/all/all.h @@ -61,7 +61,7 @@ memmove((ptr), &__tmp, sizeof(*(ptr))); #define put_unaligned(ptr, val) ((void)( *(ptr) = (val) )) #endif /* __EMULATE_UNALIGNED__ */ -#ifdef __BIG_ENDIAN__ +#if __BYTE_ORDER == __BIG_ENDIAN #define ADJUST_ENDIANNESS16(Ptr) {\ USHORT x = get_unaligned((USHORT*) (Ptr));\ put_unaligned((USHORT*) (Ptr), x >> 8 | x << 8);\ @@ -78,10 +78,12 @@ memmove((ptr), &__tmp, sizeof(*(ptr))); x2 = x2 >> 16 | x2 << 16;\ put_unaligned(((ULONG*) (Ptr)), (x2&0xff00ff00) >> 8 | (x2&0x00ff00ff) << 8);\ } -#else +#elif __BYTE_ORDER == __LITTLE_ENDIAN #define ADJUST_ENDIANNESS16(Ptr) #define ADJUST_ENDIANNESS32(Ptr) #define ADJUST_ENDIANNESS64(Ptr) +#else +#error Please define system endianness #endif #endif debian/patches/06-fix-bad-pointer-arith.patch0000644000000000000000000002144411726226516016173 0ustar Author: Michael Karcher Description: This patch removes non-portable pointer arithmetics and useless casts of pointers to integers. --- unace-nonfree-2.5.orig/source/apps/exe/input/input.c +++ unace-nonfree-2.5/source/apps/exe/input/input.c @@ -169,6 +169,7 @@ CHAR ShortStr1[80], TempStr[200]; INT TimeCount; UINT ButtonNumber; +PCHAR ButtonPtr; PCHAR Output; APPS_EXE_CONVERT_MakeStrShorter(ShortStr1, Description1, 79); @@ -207,11 +208,11 @@ PCHAR Output; APPS_EXE_INPUT.LastKey = APPS_EXE_MESSAGES.YANC[3]; } } - while (!(ButtonNumber = - (LONG) strchr(APPS_EXE_MESSAGES.YANC, APPS_EXE_INPUT.LastKey)) + while (!(ButtonPtr = + strchr(APPS_EXE_MESSAGES.YANC, APPS_EXE_INPUT.LastKey)) && !BASE_ERROR_EXTERN_HandleCancel(0)); - ButtonNumber -= (LONG) APPS_EXE_MESSAGES.YANC; + ButtonNumber = ButtonPtr - APPS_EXE_MESSAGES.YANC; if (!BASE_ERROR.ErrorCode) { --- unace-nonfree-2.5.orig/source/apps/unace/exe/commline/commline.c +++ unace-nonfree-2.5/source/apps/unace/exe/commline/commline.c @@ -42,15 +42,17 @@ void APPS_UNACE_EXE_COMMLINE_Init(void) { + INT SearchExcludeListMax; + APPS_EXE_COMMLINE.TimeOutLimit = 600; BASE_FILELIST.SearchExcludeListEnd = BASE_FILELIST.SearchExcludeList = - (PCHAR) BASE_MEMORY_GetMemBase2((PINT) - &BASE_FILELIST.SearchExcludeListMax, + (PCHAR) BASE_MEMORY_GetMemBase2(&SearchExcludeListMax, 1); - BASE_FILELIST.SearchExcludeListMax += (INT) BASE_FILELIST.SearchExcludeList; + BASE_FILELIST.SearchExcludeListMax = SearchExcludeListMax + + BASE_FILELIST.SearchExcludeList; APPS_EXE_OUTPUT.DoUseStdOutput = 1; @@ -265,12 +267,12 @@ INT Handle, void APPS_UNACE_EXE_COMMLINE_GetFileListInit(void) { + INT SearchListMax; BASE_FILELIST.SearchListEnd = BASE_FILELIST.SearchList = - (PCHAR) BASE_MEMORY_GetMemBase2((PINT) - &BASE_FILELIST.SearchListMax, 1); + (PCHAR) BASE_MEMORY_GetMemBase2(&SearchListMax,1); - BASE_FILELIST.SearchListMax += (INT) BASE_FILELIST.SearchListEnd; + BASE_FILELIST.SearchListMax = SearchListMax + BASE_FILELIST.SearchListEnd; } /*-----------------APPS_UNACE_EXE_COMMLINE_GetFileListDone---------------*/ --- unace-nonfree-2.5.orig/source/base/all/arcblk/arcblk.c +++ unace-nonfree-2.5/source/base/all/arcblk/arcblk.c @@ -218,8 +218,8 @@ void BASE_ARCBLK_ConvertHeader32ToHea memmove(&BASE_ARCBLK.Header.File.FTIME, &BASE_ARCBLK.Header.File32.FTIME, sizeof(BASE_ARCBLK.Header) - - ((ULONG)&BASE_ARCBLK.Header.File.FTIME - - (ULONG)&BASE_ARCBLK.Header)); + - ((PCHAR)&BASE_ARCBLK.Header.File.FTIME + - (PCHAR)&BASE_ARCBLK.Header)); BASE_ARCBLK.Header.File.PSIZE = PSIZE; BASE_ARCBLK.Header.File.SIZE = SIZE; @@ -239,8 +239,8 @@ void BASE_ARCBLK_ConvertHeader32ToHea memmove(&BASE_ARCBLK.Header.Recovery.CLUSTER, &BASE_ARCBLK.Header.Recovery32.CLUSTER, sizeof(BASE_ARCBLK.Header) - - ((ULONG)&BASE_ARCBLK.Header.Recovery.CLUSTER - - (ULONG)&BASE_ARCBLK.Header)); + - ((PCHAR)&BASE_ARCBLK.Header.Recovery.CLUSTER + - (PCHAR)&BASE_ARCBLK.Header)); BASE_ARCBLK.Header.Recovery.REC_BLK_SIZE = REC_BLK_SIZE; BASE_ARCBLK.Header.Recovery.REL_STRT = REL_STRT; @@ -259,8 +259,8 @@ void BASE_ARCBLK_ConvertHeader32ToHea memmove(&BASE_ARCBLK.Header.Basic.other, &BASE_ARCBLK.Header.Basic32.other, sizeof(BASE_ARCBLK.Header) - - ((ULONG)&BASE_ARCBLK.Header.Basic.other - - (ULONG)&BASE_ARCBLK.Header)); + - ((PCHAR)&BASE_ARCBLK.Header.Basic.other + - (PCHAR)&BASE_ARCBLK.Header)); BASE_ARCBLK.Header.Basic.ADDSIZE = ADDSIZE; --- unace-nonfree-2.5.orig/source/base/all/archives/ace/ace.c +++ unace-nonfree-2.5/source/base/all/archives/ace/ace.c @@ -35,12 +35,12 @@ ULONGLONG FilePos, if (!memcmp(&BASE_ARCHIVES_TEST.TestBuffer[I], BASE_ACESTRUC_ACESIGN, BASE_ACESTRUC_ACESIGNLEN) && (FilePos = BASE_DIRDATA_Dir1.ArchiveBegin + I - - ((INT) BASE_ARCBLK.Header.Main.ACESIGN - - (INT) &BASE_ARCBLK.Header)) + - ((PCHAR) BASE_ARCBLK.Header.Main.ACESIGN + - (PCHAR) &BASE_ARCBLK.Header)) >= 0) { - Flags = ((INT) BASE_ARCBLK.Header.Main.ACESIGN - (INT) &BASE_ARCBLK.Header); - Flags = ((INT) &BASE_ARCBLK.Header.Main.ACESIGN - (INT) &BASE_ARCBLK.Header); + Flags = ((PCHAR) BASE_ARCBLK.Header.Main.ACESIGN - (PCHAR) &BASE_ARCBLK.Header); + Flags = ((PCHAR) &BASE_ARCBLK.Header.Main.ACESIGN - (PCHAR) &BASE_ARCBLK.Header); BASE_DOSFUNCS_LSeek(BASE_ARCHIVES_TEST.ArchiveHandle, FilePos, SEEK_SET); read(BASE_ARCHIVES_TEST.ArchiveHandle, (PCHAR) &BASE_ARCBLK.Header, 4); --- unace-nonfree-2.5.orig/source/base/all/filelist/filelist.c +++ unace-nonfree-2.5/source/base/all/filelist/filelist.c @@ -314,6 +314,7 @@ INT BASE_FILELIST_Create(BOOL DoAddD BOOL DoOutputNoFilesError) { PVOID SavedScreenPtr; +ULONG PosIndex, LastIndex; BASE_MSGOUT_EXTERN_ListCreateBegin(&SavedScreenPtr); @@ -344,14 +345,14 @@ PVOID SavedScreenPtr; BASE_FILELIST.Number * sizeof(tBASE_FILELIST_FileData)); - BASE_FILELIST.Pos -= (ULONG) BASE_FILELIST.List; - BASE_FILELIST.Last -= (ULONG) BASE_FILELIST.List; - + PosIndex = BASE_FILELIST.Pos - BASE_FILELIST.List; + LastIndex = BASE_FILELIST.Last - BASE_FILELIST.List; + BASE_FILELIST.List = (PCHAR) BASE_MEMORY_ReAlloc(BASE_FILELIST.List, - (ULONG) BASE_FILELIST.Last); + LastIndex); - BASE_FILELIST.Pos += (ULONG) BASE_FILELIST.List; - BASE_FILELIST.Last += (ULONG) BASE_FILELIST.List; + BASE_FILELIST.Pos = BASE_FILELIST.List + PosIndex; + BASE_FILELIST.Last = BASE_FILELIST.List + LastIndex; BASE_MEMORY_Optimize(); --- unace-nonfree-2.5.orig/source/base/all/lfn/nont.c +++ unace-nonfree-2.5/source/base/all/lfn/nont.c @@ -131,7 +131,7 @@ CHAR NumberStr[8]; CharPos1 = &Name[strlen(Name)]; } - Len = (UINT) CharPos1 - (UINT) Name; + Len = (PCHAR) CharPos1 - (PCHAR) Name; for (I = 0; I < Len; I++) { --- unace-nonfree-2.5.orig/source/base/all/memory/memory.c +++ unace-nonfree-2.5/source/base/all/memory/memory.c @@ -238,8 +238,8 @@ INT I, J; BASE_MEMORY_EXTERN_OptimizeOtherMemory(); - I = (INT) BASE_FILELIST.Last - (INT) BASE_FILELIST.List; - J = (INT) BASE_FILELIST.Pos - (INT) BASE_FILELIST.List; + I = BASE_FILELIST.Last - BASE_FILELIST.List; + J = BASE_FILELIST.Pos - BASE_FILELIST.List; BASE_FILELIST.List = (PCHAR)BASE_MEMORY_ReAllocSameSize(BASE_FILELIST.List); BASE_FILELIST.Last = BASE_FILELIST.List + I; BASE_FILELIST.Pos = BASE_FILELIST.List + J; --- unace-nonfree-2.5.orig/source/base/all/pathfunc/pathfunc.c +++ unace-nonfree-2.5/source/base/all/pathfunc/pathfunc.c @@ -195,18 +195,18 @@ INT SourceIndex, if (WildcardPos < PointPos && WildcardPos) { - SourceIndex = (LONG) WildcardPos - (LONG) SourceStr; + SourceIndex = WildcardPos - SourceStr; } else { if (PointPos) { - SourceIndex = (LONG) PointPos - (LONG) SourceStr; + SourceIndex = PointPos - SourceStr; } else { SourceIndex = WildcardPos ? - (LONG) WildcardPos - (LONG) SourceStr : + WildcardPos - SourceStr : strlen(SourceStr); } } @@ -227,7 +227,7 @@ INT SourceIndex, if (PointPos) { - SourceIndex = (INT) PointPos - (INT) SourceStr + 1; + SourceIndex = PointPos - SourceStr + 1; CharsToCopy = 0; while (SourceStr[SourceIndex] && SourceStr[SourceIndex] != '*') @@ -276,7 +276,7 @@ INT Result; return 0; } - Result = (UINT) SlashPos - (UINT) Path + 1; + Result = SlashPos - Path + 1; } else { @@ -323,7 +323,7 @@ PCHAR SlashPos; } *SlashPos = 0; - SlashPos = SlashPos - (UINT) Dir + (UINT) FileName; + SlashPos = SlashPos - Dir + FileName; if (*SlashPos == BASE_PATHFUNC_SEPARATOR) { debian/patches/04-64bit.patch0000644000000000000000000000656511726226516013033 0ustar Author: Michael Karcher Description: Replace declare.h by a generic stdint based version. Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=449395 --- unace-nonfree-2.5.orig/source/base/all/declare.h +++ unace-nonfree-2.5/source/base/all/declare.h @@ -7,76 +7,47 @@ #ifndef _DECLARE_H_INCLUDED #define _DECLARE_H_INCLUDED -#if !defined(__OS2__) && !defined(_WINDOWS_) - typedef int BOOL; +#include - typedef char CHAR; - typedef unsigned char UCHAR; - typedef UCHAR *PUCHAR; - typedef char *PSZ; +typedef int BOOL; +typedef BOOL *PBOOL; - typedef short SHORT; - typedef unsigned short USHORT; - typedef USHORT *PUSHORT; - - typedef long LONG; - typedef unsigned long ULONG; - - typedef ULONG *PULONG; - - typedef int INT; - typedef unsigned int UINT; - typedef unsigned int *PUINT; - - typedef CHAR *LPSTR; -#endif - -#if __WATCOMC__==1060 - typedef long __int64[2]; - typedef __int64 LONGLONG; - typedef LONGLONG *PLONGLONG; - typedef __int64 ULONGLONG; - typedef ULONGLONG DWORDLONG; -#else - #if !defined(_WINDOWS_) - #if !defined(__WATCOMC__) && !defined(__int64) - #define __int64 long long - #endif - - typedef __int64 LONGLONG; - typedef LONGLONG *PLONGLONG; - typedef unsigned __int64 ULONGLONG; - typedef ULONGLONG DWORDLONG; - #endif -#endif - - -#if !defined(_WINDOWS_) - typedef BOOL *PBOOL; - typedef INT *PINT; -#endif - -#if !defined(__wtypes_h__) - typedef void *PVOID; - typedef CHAR *PCHAR; - typedef SHORT *PSHORT; - typedef LONG *PLONG; - typedef ULONGLONG *PULONGLONG; -#endif - -#if defined(_GNU_H_WINDOWS32_BASE) - typedef LONGLONG ULONGLONG; - typedef ULONGLONG *PULONGLONG; -#endif - -typedef signed char SCHAR; +typedef char CHAR; +typedef CHAR *PCHAR; +typedef unsigned char UCHAR; +typedef UCHAR *PUCHAR; +typedef signed char SCHAR; +typedef CHAR *PSZ; +typedef CHAR *LPSTR; + +typedef int INT; +typedef INT *PINT; +typedef unsigned int UINT; +typedef unsigned int *PUINT; + +typedef int16_t SHORT; +typedef SHORT *PSHORT; +typedef uint16_t USHORT; +typedef USHORT *PUSHORT; + +typedef int32_t LONG; +typedef LONG *PLONG; +typedef uint32_t ULONG; +typedef ULONG *PULONG; + +typedef int64_t LONGLONG; +typedef LONGLONG *PLONGLONG; +typedef uint64_t ULONGLONG; +typedef ULONGLONG *PULONGLONG; + +typedef void *PVOID; + +/* Dear ACE team, please clean your code to remove the following types */ +typedef LONGLONG __int64; +typedef ULONGLONG DWORDLONG; #ifndef NULL - #if defined(__SMALL__) || defined(__MEDIUM__) || defined(__386__) || defined(__AXP__) || defined(__PPC__) - #define NULL 0 - #else - #define NULL 0L - #endif +#include #endif debian/patches/13-maximum-file-name-length.patch0000644000000000000000000000115411726226516016657 0ustar Author: P Stahlman Description: Increase buffer to cater for maximum file name length (LP: #179684). Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/unace-nonfree/+bug/179684 Origin: https://launchpadlibrarian.net/35753473/acefuncs.c.patch --- unace-nonfree-2.5.orig/source/apps/exe/acefuncs/acefuncs.c +++ unace-nonfree-2.5/source/apps/exe/acefuncs/acefuncs.c @@ -27,7 +27,7 @@ void APPS_EXE_ACEFUNCS_List(BOOL Verbose) { -CHAR ShortStr[80], +CHAR ShortStr[BASE_LFN_MAXLEN], SizeStr1[80], SizeStr2[80], OutputStr[160]; debian/patches/05-warning-fixes.patch0000644000000000000000000002402311726226516014652 0ustar Author: Michael Karcher Description: This patch fixes harmless warnings, mostly suggested parentheses. --- unace-nonfree-2.5.orig/source/apps/exe/convert/convert.c +++ unace-nonfree-2.5/source/apps/exe/convert/convert.c @@ -109,7 +109,7 @@ INT UnitCharNumber; { UnitCharNumber = 0; - while (Size > 999999999 || UnitCharNumber && Size > 99999999) + while (Size > 999999999 || (UnitCharNumber && Size > 99999999)) { Size >>= 10; UnitCharNumber++; --- unace-nonfree-2.5.orig/source/apps/exe/messages/messages.c +++ unace-nonfree-2.5/source/apps/exe/messages/messages.c @@ -192,7 +192,7 @@ INT APPS_EXE_MESSAGES_GetHotKey(PCHA { PCHAR AndPos; - if (AndPos = strchr(Str, '&')) + if ((AndPos = strchr(Str, '&'))) { strcpy(AndPos, AndPos + 1); --- unace-nonfree-2.5.orig/source/apps/unace/exe/commline/commline.c +++ unace-nonfree-2.5/source/apps/unace/exe/commline/commline.c @@ -393,7 +393,7 @@ INT I; void APPS_UNACE_EXE_COMMLINE_ToggleSwitch(PCHAR SwitchChar, PINT Variable) { - if (!(*SwitchChar) || *SwitchChar == '+' && *(SwitchChar + 1) == 0) + if (!(*SwitchChar) || (*SwitchChar == '+' && *(SwitchChar + 1) == 0)) { *Variable = 1; } @@ -549,9 +549,9 @@ PCHAR PointPos; if (strrchr(APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName, BASE_PATHFUNC_SEPARATOR) > PointPos || !PointPos - || !BASE_CONVERT_StrICmp(PointPos, ".") - && !BASE_CONVERT_StrICmp(PointPos, ".ace") - && !BASE_CONVERT_StrICmp(PointPos, ".exe")) + || (!BASE_CONVERT_StrICmp(PointPos, ".") + && !BASE_CONVERT_StrICmp(PointPos, ".ace") + && !BASE_CONVERT_StrICmp(PointPos, ".exe"))) { strcat(APPS_UNACE_EXE_COMMLINE.WildcardedArchiveName, BASE_ACESTRUC_EXTENSION); --- unace-nonfree-2.5.orig/source/base/all/arcblk/arcblk.c +++ unace-nonfree-2.5/source/base/all/arcblk/arcblk.c @@ -117,7 +117,7 @@ void BASE_ARCBLK_FileHeaderSecurityRe if ((Header->File.HEAD_FLAGS & BASE_ACESTRUC_FLAG_SECURITY) && (*Size = BASE_ARCBLK_FileHeaderSecuritySize(Header))) { - if (*Security = BASE_MEMORY_GetMem(*Size)) + if ((*Security = BASE_MEMORY_GetMem(*Size))) { memcpy(*Security, BASE_ARCBLK_FileHeaderSecurity(Header), *Size); } --- unace-nonfree-2.5.orig/source/base/all/archives/test/test.c +++ unace-nonfree-2.5/source/base/all/archives/test/test.c @@ -59,7 +59,7 @@ tBASE_DIRDATA_DirData (PVOID)&BASE_ARCHIVES_TEST.TestBuffer[TestPos], 512 + 32 -TestPos); - if (!Read && !TestPos || errno) + if ((!Read && !TestPos) || errno) { break; } --- unace-nonfree-2.5.orig/source/base/all/comments/comments.c +++ unace-nonfree-2.5/source/base/all/comments/comments.c @@ -47,7 +47,11 @@ PCHAR CommentPos; CommentSize = sizeof(BASE_COMMENTS.Comment) - 1; } - memcpy(BASE_COMMENTS.Comment, CommentPos, CommentSize); + if(CommentSize > 0) + { + memcpy(BASE_COMMENTS.Comment, CommentPos, CommentSize); + } + BASE_COMMENTS.CompressedSize = CommentSize; BASE_DCPR_COMMENTS_GetComment(); --- unace-nonfree-2.5.orig/source/base/all/dcpr/dcpr.c +++ unace-nonfree-2.5/source/base/all/dcpr/dcpr.c @@ -125,8 +125,8 @@ INT R, RestLen -= R; } while ((R || BASE_DCPR.NextType != BASE_DCPR.Type - || (BASE_DCPR.NextType == BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA) - && BASE_DCPR_LZ77.NextDeltaLen) + || ((BASE_DCPR.NextType == BASE_ACESTRUC_BLOCKEDTYPE_LZ77_DELTA) + && BASE_DCPR_LZ77.NextDeltaLen)) && (RestLen > BASE_CPRDCPR_LZ77_MAXLEN)); return Len - RestLen; --- unace-nonfree-2.5.orig/source/base/all/dosfuncs/lin.c +++ unace-nonfree-2.5/source/base/all/dosfuncs/lin.c @@ -46,7 +46,7 @@ PCHAR ChPtr; { BASE_PATHFUNC_CompletePath(DirToOpen); - if (ChPtr = strrchr(DirToOpen, BASE_PATHFUNC_SEPARATOR)) + if ((ChPtr = strrchr(DirToOpen, BASE_PATHFUNC_SEPARATOR))) { strcpy(SearchMask, ChPtr + 1); --- unace-nonfree-2.5.orig/source/base/all/extract/extract.c +++ unace-nonfree-2.5/source/base/all/extract/extract.c @@ -134,7 +134,7 @@ UINT NTFSSecuritySize; Decompressed = BASE_DCPR_Block(&Buf[BufPos], BufSize + BASE_CPRDCPR_LZ77_MAXLEN - BufPos); - if (!Decompressed && !BufPos || BASE_ERROR_EXTERN_HandleCancel(1)) + if ((!Decompressed && !BufPos) || BASE_ERROR_EXTERN_HandleCancel(1)) { break; } @@ -265,8 +265,8 @@ INT FilesNumber; while (!BASE_ERROR_EXTERN_HandleCancel(1) && (BASE_EXTRACT.DoExtractAllVolumes - || BASE_ARCBLK.Options.IsVolume - && BASE_EXTRACT.DoProcessAllVolumes + || (BASE_ARCBLK.Options.IsVolume + && BASE_EXTRACT.DoProcessAllVolumes) || FilesNumber) && BASE_ARCBLK_LoadBlock()) { @@ -348,8 +348,8 @@ tLFN ArchiveName; if (BASE_VOLUME_FirstVolumeToProcess(ArchiveName)) { - if (!DoWriteData && BASE_ARCBLK.Options.IsSolid - || !BASE_FILELIST.Number) + if ((!DoWriteData && BASE_ARCBLK.Options.IsSolid) + || !BASE_FILELIST.Number) { BASE_EXTRACT.DoExtractAllVolumes = 1; BASE_FILELIST.SizeOfFiles = BASE_DIRDATA_Dir1.UnPackedSize; --- unace-nonfree-2.5.orig/source/base/all/funcs/funcs.c +++ unace-nonfree-2.5/source/base/all/funcs/funcs.c @@ -24,10 +24,11 @@ void BASE_FUNCS_Copy(INT Mode) BASE_FILELIST.DoAddFileCheckIfValidFile = !BASE_DIRDATA_IsInArchive1 && BASE_DIRDATA_IsInArchive2; - if (BASE_EXTRACT.DoExtractAllVolumes - && BASE_FILELIST_Create(1, 5, 1) - || !BASE_EXTRACT.DoExtractAllVolumes - && BASE_FILELIST_Create(1, Mode, 1)) + if ((BASE_EXTRACT.DoExtractAllVolumes + && BASE_FILELIST_Create(1, 5, 1)) + || + (!BASE_EXTRACT.DoExtractAllVolumes + && BASE_FILELIST_Create(1, Mode, 1))) { BASE_FUNCS_EXTERN_DoCopy(Mode); @@ -45,7 +46,7 @@ void BASE_FUNCS_Copy(INT Mode) INT BASE_FUNCS_DeleteRealFile(PCHAR FileName, BOOL IsOverwriteDelete) { -BOOL Err; +BOOL Err = 0; INT Input; UINT Attr; @@ -76,11 +77,12 @@ UINT Attr; { BASE_ERROR.ErrorCode = BASE_ERROR_USER; } - } - - if (Input && !BASE_FUNCS.DoDeleteAll) - { - return 1; + + if (Input > 1) + { + return 1; + } + } BASE_LFN_SetFileAttributes(FileName, BASE_DOSFUNCS_NORMAL); @@ -162,7 +164,7 @@ INT BaseLen; INT BASE_FUNCS_CreateDestinationFile(INT Attr) { INT Handle, - Input, + Input = 0, Len; sprintf(BASE_STATE.DestinationFileName, "%s%s", @@ -224,7 +226,7 @@ INT Handle, } BASE_FUNCS.DidNotCopyAll |= - (Input = (Input && !BASE_FUNCS.DoOverwriteAll + (Input = ((Input && !BASE_FUNCS.DoOverwriteAll) || BASE_FUNCS_DeleteRealFile(BASE_STATE.DestinationFileName, 1))); if (Input) --- unace-nonfree-2.5.orig/source/base/all/lfn/lin.c +++ unace-nonfree-2.5/source/base/all/lfn/lin.c @@ -50,7 +50,7 @@ tLFN SearchFile, { SepStr = getenv("PATH"); - if (Env = (PCHAR) BASE_MEMORY_GetMem(strlen(SepStr) + 1)) + if ((Env = (PCHAR) BASE_MEMORY_GetMem(strlen(SepStr) + 1))) { strcpy(Env, SepStr); SepStr = Env; --- unace-nonfree-2.5.orig/source/base/all/lfn/nont.c +++ unace-nonfree-2.5/source/base/all/lfn/nont.c @@ -52,7 +52,7 @@ INT NameNumber, do { - if (NextSlashPos = (PCHAR) strchr(NamePos, BASE_PATHFUNC_SEPARATOR)) + if ((NextSlashPos = (PCHAR) strchr(NamePos, BASE_PATHFUNC_SEPARATOR))) { NameLen = NextSlashPos - NamePos; } --- unace-nonfree-2.5.orig/source/base/all/memory/nodos32.c +++ unace-nonfree-2.5/source/base/all/memory/nodos32.c @@ -14,7 +14,7 @@ INT OldSize; OldSize = BASE_MEMORY_Size(OldPointer); - if (NewPointer = realloc((PVOID) ((PULONG) OldPointer - 1), NewSize + 4)) + if ((NewPointer = realloc((PVOID) ((PULONG) OldPointer - 1), NewSize + 4))) { BASE_MEMORY.MaxAllocate += OldSize - NewSize; *(PULONG) NewPointer = NewSize; --- unace-nonfree-2.5.orig/source/base/all/pathfunc/pathfunc.c +++ unace-nonfree-2.5/source/base/all/pathfunc/pathfunc.c @@ -140,7 +140,7 @@ INT I, DoRepeat = 0; strcpy(CompareStr1, SlashPos); - if (NextSlashPos = strchr(SlashPos + 1, BASE_PATHFUNC_SEPARATOR)) + if ((NextSlashPos = strchr(SlashPos + 1, BASE_PATHFUNC_SEPARATOR))) { CompareStr1[NextSlashPos - SlashPos] = 0; } @@ -345,11 +345,12 @@ INT CurrentDirLen; || !strchr(Path, ':')) && Path[0] != '/') */ - if (Path[0] == '\\' && Path[1] != '\\' - || Path[0] != BASE_PATHFUNC_SEPARATOR + if ((Path[0] == '\\' && Path[1] != '\\') + || (Path[0] != BASE_PATHFUNC_SEPARATOR #ifndef __unix__ && !strchr(Path, ':') #endif + ) ) { getcwd(CurrentDir, sizeof(CurrentDir)); @@ -390,7 +391,7 @@ BOOL BASE_PATHFUNC_IsNTFSStreamName(P { PCHAR Ptr; - if (Ptr = strrchr(Path, ':')) + if ((Ptr = strrchr(Path, ':'))) { return *(Ptr + 1) != '\\'; } --- unace-nonfree-2.5.orig/source/base/all/state/state.h +++ unace-nonfree-2.5/source/base/all/state/state.h @@ -54,6 +54,7 @@ void BASE_STATE_OutputProgress(INT Re void BASE_STATE_OutputCRCOk(BOOL CRCIsOk); void BASE_STATE_EXTERN_IsCRCOk(PBOOL IsCRCOk, BOOL IsEncrypted); +void BASE_STATE_EXTERN_IsCRCOkSet(PBOOL IsCRCOk, BOOL IsEncrypted); void BASE_STATE_EXTERN_OutputProgressData(PCHAR Buf, INT Bytes); void BASE_STATE_EXTERN_OutputProcess(PCHAR OperationStr, PCHAR FileName, debian/patches/08-ulonglong-printf.patch0000644000000000000000000000173111726226516015401 0ustar Author: Michael Karcher Description: This patch fixes a portability issue about printing big numbers. --- unace-nonfree-2.5.orig/source/apps/exe/convert/convert.c +++ unace-nonfree-2.5/source/apps/exe/convert/convert.c @@ -31,7 +31,7 @@ INT StrLen, ByteSize = (ByteSize / 1000000) * 100000000 + (ByteSize / 1000) * 10000 + ByteSize % 1000; - sprintf(Str, "%lld ", ByteSize); + sprintf(Str, "%llu ", (unsigned long long)ByteSize); StrLen = strlen(Str) - 1; Str[StrLen] = UNITCHARS[UnitCharNumber]; @@ -117,12 +117,12 @@ INT UnitCharNumber; if (UnitCharNumber) { - sprintf(SizeStr, "%8lld ", Size); + sprintf(SizeStr, "%8llu ", (unsigned long long)Size); SizeStr[strlen(SizeStr) - 1] = UNITCHARS[UnitCharNumber]; } else { - sprintf(SizeStr, "%9lld", Size); + sprintf(SizeStr, "%9llu", (unsigned long long)Size); } } debian/patches/01-only-unace.patch0000644000000000000000000000204111726226516014133 0ustar Author: Fabian Greffrath Description: Do not try to include Makefiles for ace or unace.dll and force remove in clean rule. --- unace-nonfree-2.5.orig/base.mk +++ unace-nonfree-2.5/base.mk @@ -427,9 +427,7 @@ BASE_OS2_OBJS = ############################################################################## ifndef ISWMAKE -include $(MAKE_DIR)baseace.mk include $(MAKE_DIR)baseuace.mk else -!include $(MAKE_DIR)baseace.mk !include $(MAKE_DIR)baseuace.mk endif --- unace-nonfree-2.5.orig/makefile +++ unace-nonfree-2.5/makefile @@ -29,8 +29,8 @@ endif all: unace clean: - rm unace - rm linunace25.tgz + rm -f unace + rm -f linunace25.tgz include $(MAKE_DIR)base.mk include $(MAKE_DIR)apps.mk --- unace-nonfree-2.5.orig/unace.mk +++ unace-nonfree-2.5/unace.mk @@ -27,8 +27,6 @@ APPS_UNACE_OBJS = ifndef ISWMAKE include $(MAKE_DIR)unaceexe.mk -include $(MAKE_DIR)unacedll.mk else !include $(MAKE_DIR)unaceexe.mk -!include $(MAKE_DIR)unacedll.mk endif debian/patches/series0000644000000000000000000000056611726226516012051 0ustar 01-only-unace.patch 02-no-io_h.patch 03-gcc-call.patch 04-64bit.patch 05-warning-fixes.patch 06-fix-bad-pointer-arith.patch 07-fix-free-aliasing-issue.patch 08-ulonglong-printf.patch 09-utf8-filenames.patch 10-uninorm-signedness.patch 11-possibly-critical.patch 12-cast-filetime.patch 13-maximum-file-name-length.patch 14-endianness-detection.patch 15-format-security.patch debian/patches/15-format-security.patch0000644000000000000000000000065211726226516015231 0ustar Author: Fabian Greffrath Description: Fix format string vulnarability. --- unace-nonfree-2.5.orig/source/apps/exe/output/output.c +++ unace-nonfree-2.5/source/apps/exe/output/output.c @@ -125,7 +125,7 @@ CHAR DeleteStr[223]; memset(&DeleteStr[74], ' ', 74); DeleteStr[222] = 0; - printf(DeleteStr); + printf("%s", DeleteStr); #ifndef __sun__ fflush(stdout); #endif debian/compat0000644000000000000000000000000211726227074010374 0ustar 9 debian/manpage/0000755000000000000000000000000011726226516010606 5ustar debian/manpage/unace.10000644000000000000000000000215211726226516011763 0ustar .TH unace 1 2005-12-05 "2.50" "unace manual" .SH NAME unace \- extract, test and view ACE archives .SH SYNOPSIS .B unace .RI < command > .RI [\-< sw1 >\ ...] .RI < archive > .RI [< base_dir >\e] .RI [< files >/@< filelist >] .SH DESCRIPTION The .B unace utility is used for extracting, testing and viewing the contents of archives created with the ACE archiver. .SH COMMANDS .TP .B e Extract files .TP .B l List archive .TP .B t Test archive integrity .TP .B v List archive (verbose) .TP .B x Extract files with full path .SH SWITCHES .TP .BR c [\-] Show comments (default \+) .TP .BR f [\-] Full path matching (default \-) .TP .BR o [\-] Overwrite files (default \-) .TP .BR p <\fIpass\fP> Set password .TP .BR y [\-] Assume yes on all queries (default \-) .TP .BR x <\fIfiles\fP/@\fIlist\fP> Exclude <\fIfiles\fP> or files in <\fIlist\fP> from process .SH SEE ALSO .BR gzip (1), .BR bzip2 (1), .BR zip (1), .BR arj (1), .BR ppmd (1). .SH AUTHORS This manual page was written by Guillem Jover and revised by Fabian Greffrath for the Debian project (but may be used by others). debian/control0000644000000000000000000000143311726227074010602 0ustar Source: unace-nonfree Section: non-free/utils Priority: extra Maintainer: Fabian Greffrath Build-Depends: debhelper (>= 9) Standards-Version: 3.9.3.1 XS-Autobuild: yes Homepage: http://www.winace.com/ Vcs-Git: git://anonscm.debian.org/collab-maint/unace-nonfree.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/unace-nonfree.git Package: unace-nonfree Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: extract, test and view .ace archives (non-free version) The unace utility is used for extracting, testing and viewing the contents of archives created with the ACE archiver. . Unlike the unace package which can only extract ACE 1.0 archives, the unace-nonfree package allows one to unpack all current ACE archives. debian/changelog0000644000000000000000000001306111726230001011031 0ustar unace-nonfree (2.5-7) unstable; urgency=low * Convert to "3.0 (quilt)" source format. * Convert all patches from dpatch to quilt. * Add DEP-3 compliant headers to all patches. * Convert debian/copyright to DEP-5 compliant format. * Convert debian/rules to debhelper 7 short-form format. * Add debian/unace-nonfree.{install,manpages} files. * Rename debian/{postrm,preinst} to unace-nonfree.{postrm,preinst}. * Add Homepage field to debian/control. * Bump Standards-Version to 3.9.2. * Mangle upstream version in debian/watch, not Debian version. * Bump debhelper compatibility to v9. * debian/patches/03-gcc-call.patch: + Apply CPPFLAGS during build. * debian/patches/14-endianness-detection.patch: + New patch from Gentoo to make the check for endianness actually occur. + With this patch, Gentoo has masked unace unstable on ~hppa, ~ppc and ~ppc64. Feel brave and change Architecture to "any", too. * debian/patches/15-format-security.patch: + New patch, fix format string vulnarability. [ Jari Aalto ] * debian/control + Bump Standards-Version to 3.9.3.1 * debian/copyright: + Update to format 1.0 + Delete EOL whitespaces. * debian/rules + Use hardened CFLAGS. http://wiki.debian.org/ReleaseGoals/SecurityHardeningBuildFlags -- Fabian Greffrath Mon, 08 Mar 2012 11:13:51 +0100 unace-nonfree (2.5-6) unstable; urgency=low * Updated my email address. * Bumped Standards-Version to 3.8.3. * Removed duplicate binary control field "section". * Added debian/README.source file. * Fixed Debian packaging copyright information. * debian/patches/13-maximum-file-name-length.dpatch: New patch, increase buffer to cater for maximum file name length (LP: #179684). * Added debian/watch file. -- Fabian Greffrath Mon, 14 Dec 2009 09:23:43 +0100 unace-nonfree (2.5-5) unstable; urgency=low * Upload to unstable. * debian/control: + Bumped Standards-Version to 3.7.3. * debian/patches/03-gcc-call.dpatch: + Merged with a patch courtesy of Mike Frysinger that "uses standard env vars so it behaves like autotools and removes pointless -I paths that for native builds are redundant and for cross builds broken." Thank you very much! -- Fabian Greffrath Fri, 11 Apr 2008 16:00:00 +0100 unace-nonfree (2.5-4) experimental; urgency=low * Upload to experimental. * debian/control: + Build on all little-endian architectures. -- Fabian Greffrath Mon, 11 Feb 2008 10:00:00 +0100 unace-nonfree (2.5-3) unstable; urgency=low * debian/control: + Dropped useless libncurses-dev from Build-Depends. + Reduced supported Archs to i386 and amd64 for the time being. + Added ${misc:Depends} to Depends. * debian/rules: + Patch before clean, unpatch after clean. + Do not ignore 'make clean' errors anymore. * debian/patches/01-rm-f.dpatch: + Updated to force remove in clean rule. * debian/patches/03-gcc-call.dpatch: + Updated to call the C-Compiler via $(CC) and drop useless linking against libncurses. * Applied a series of patches courtesy of Michael Karcher : * debian/patches/02-no-io_h.dpatch: + Updated to include instead of . * debian/patches/04-64bit.dpatch: + Replace declare.h by a generic stdint based version (Closes: #449395). * debian/patches/05-warning-fixes.dpatch: + This patch fixes harmless warnings, mostly suggested parentheses. * debian/patches/06-fix-bad-pointer-arith.dpatch: + This patch removes non-portable pointer arithmetics and useless casts of pointers to integers. * debian/patches/07-fix-free-aliasing-issue.dpatch: + This patch redefines how BASE_MEMORY_FreeCheck works, and avoids tons of "may break strict aliasing rules" warnings. It also removes casts on invocation. * debian/patches/08-ulonglong-printf.dpatch: + This patch fixes a portability issue about printing big numbers. * debian/patches/09-utf8-filenames.dpatch: + This patch makes unace use utf8 filenames on linux instead of Latin1. * debian/patches/10-uninorm-signedness.dpatch: + Fixes prototypes in unincore.h to match uninorm.c. * debian/patches/11-possibly-critical.dpatch: + Fixes a possible security issue by initialising a local variable. * debian/patches/12-cast-filetime.dpatch: + Expresses access to bitfield as 32 bit variable using a union to not violate the strict aliasing rule. The code is still inherently non-portable. -- Fabian Greffrath Tue, 23 Nov 2007 10:15:00 +0100 unace-nonfree (2.5-2) unstable; urgency=low * Split and re-organized patches. * debian/changelog: + Reassigned closed bug numbers in previous changelog entry. * debian/control: + Changed priority from optional to extra. + Added 'XS-Autobuild: yes' field. * debian/copyright: + Designated package as autobuildable. + Added copyright notice for the Debian packaging. * debian/rules: + Define CFLAGS and pass them to $(MAKE) call. + Pass manpage/unace.1 to dh_installman call. * debian/manpages: + Removed. -- Fabian Greffrath Tue, 3 Jul 2007 15:18:00 +0100 unace-nonfree (2.5-1) unstable; urgency=low * Initial release (Closes: #259761). * Added diversions to the free unace binary and manpage (Closes: #332598). -- Fabian Greffrath Mon, 30 Dec 2005 17:42:32 +0100 debian/watch0000644000000000000000000000017311726226516010230 0ustar version=3 opts="uversionmangle=s/./$&./" \ http://www.winace.com/down.html \ http://www.winace.com/files/linunace(.*)\.tgz debian/unace-nonfree.postrm0000644000000000000000000000072011726226516013170 0ustar #!/bin/sh set -e case "$1" in remove) dpkg-divert --package unace-nonfree --remove --rename --divert \ /usr/bin/unace-free /usr/bin/unace dpkg-divert --package unace-nonfree --remove --rename --divert \ /usr/share/man/man1/unace-free.1.gz /usr/share/man/man1/unace.1.gz ;; purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) ;; *) echo "postrm called with unknown argument \`$1'" >&2 exit 1 ;; esac #DEBHELPER# exit 0 debian/rules0000755000000000000000000000026211726227153010254 0ustar #!/usr/bin/make -f export DEB_BUILD_MAINT_OPTIONS = hardening=+all export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed %: dh $@ debian/copyright0000644000000000000000000000740211726227755011142 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0 Upstream-Name: UnAce for Linux Upstream-Contact: info@winace.com Disclaimer: This package is autobuildable. It is distributed under the Public UnAce Licence, which does not impose restrictions related to architecture or distribution. Comment: The original source code was obtained by mail from the upstream author Marcel Lemke . Files: * Copyright: 2005 Ace Compression Software License: Public UnAce Licence ---------------------- . The Public UnAce Package (v2.0 or later if not otherwise stated) is distritbuted under the following licence: . . "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. . "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. . "Distribution" as it is used here means making data available to a third party. No matter in which way the data is made available. . "Copyright Holder" is ACE Compression Software. "Distribution Partner" is e-merge GmbH (authorised signatory). . . 1. The Standard Version of Public UnAce Package may be freely distributed. . 2. The UnAce sources may be used in any software to handle ACE archives without limitations free of charge, but must not be used to reproduce the ACE compression algorithm. This means that that the code must not be used to develop an ACE compatible archiver (that is: software capable of compressing to Ace archives) in any way. . 3. Distribution of modified Public UnAce sources (as part of other software or as stand-alone package) requires that it is clearly stated in the documentation and source code that it is distributed under the Public UnAce Licence. The Public UnAce Licence has to be included in this package. . 4. The name of the Copyright Holder or the support of ACE archives may not be used to endorse or promote products derived from this package without specific prior written permission from the Copyright Holder or its Distribution Partner. . 5. This Software is distributed "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE. . 6. Installing and using the Public UnAce Package signifies acceptance of these terms and conditions of the license. . . Marcel Lemke, ACE Compression Software Files: debian/* Copyright: 2005-2012 Fabian Greffrath License: GPL-2+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. . This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . . On Debian systems, the complete text of the GNU General Public License version 2 can be found in `/usr/share/common-licenses/GPL-2'. debian/source/0000755000000000000000000000000011726226516010476 5ustar debian/source/format0000644000000000000000000000001411726227076011706 0ustar 3.0 (quilt) debian/unace-nonfree.manpages0000644000000000000000000000002711726226516013437 0ustar debian/manpage/unace.1 debian/unace-nonfree.install0000644000000000000000000000001611726226516013310 0ustar unace usr/bin