Ivana Varekova 6d0bb8c
--- unzip-5.52/extract.c.4GB	2005-02-26 05:47:30.000000000 +0100
Ivana Varekova 6d0bb8c
+++ unzip-5.52/extract.c	2005-12-22 13:39:54.903205040 +0100
Ivana Varekova 6d0bb8c
@@ -308,7 +308,7 @@
Ivana Varekova 6d0bb8c
     int reached_end, no_endsig_found;
Ivana Varekova 6d0bb8c
     int error, error_in_archive=PK_COOL;
Ivana Varekova 6d0bb8c
     int *fn_matched=NULL, *xn_matched=NULL;
Ivana Varekova 6d0bb8c
-    unsigned members_processed;
Ivana Varekova 6d0bb8c
+    Z_OFF_T members_processed;
Ivana Varekova 6d0bb8c
     ulg num_skipped=0L, num_bad_pwd=0L;
Ivana Varekova 6d0bb8c
     Z_OFF_T old_extra_bytes = 0L;
Ivana Varekova 6d0bb8c
 #ifdef SET_DIR_ATTRIB
Ivana Varekova 6d0bb8c
@@ -541,7 +541,7 @@
Ivana Varekova 6d0bb8c
         G.cur_zipfile_bufstart = ftell((FILE *)G.zipfd);
Ivana Varekova 6d0bb8c
 #else /* !USE_STRM_INPUT */
Ivana Varekova 6d0bb8c
         G.cur_zipfile_bufstart =
Ivana Varekova 6d0bb8c
-          lseek(G.zipfd, cd_bufstart, SEEK_SET);
Ivana Varekova 6d0bb8c
+          lseek64(G.zipfd,(Z_OFF_T)cd_bufstart, SEEK_SET);
Ivana Varekova 6d0bb8c
 #endif /* ?USE_STRM_INPUT */
Ivana Varekova 6d0bb8c
         read(G.zipfd, (char *)G.inbuf, INBUFSIZ);  /* been here before... */
Ivana Varekova 6d0bb8c
         G.inptr = cd_inptr;
Ivana Varekova 6d0bb8c
@@ -942,7 +942,8 @@
Ivana Varekova 6d0bb8c
         Trace((stderr,
Ivana Varekova 6d0bb8c
           "debug: bufstart = %ld, cur_zipfile_bufstart = %ld\n",
Ivana Varekova 6d0bb8c
           (long)bufstart, (long)G.cur_zipfile_bufstart));
Ivana Varekova 6d0bb8c
-        if (request < 0) {
Ivana Varekova 6d0bb8c
+        if ((request < 0) || (request > MAX_ZIP_SIZE)) { /* >2^32-8193 */  
Ivana Varekova 6d0bb8c
+	    printf("retry - request = 0x%lu\n", (ulg)request);
Ivana Varekova 6d0bb8c
             Info(slide, 0x401, ((char *)slide, LoadFarStringSmall(SeekMsg),
Ivana Varekova 6d0bb8c
               G.zipfn, LoadFarString(ReportMsg)));
Ivana Varekova 6d0bb8c
             error_in_archive = PK_ERR;
Ivana Varekova 6d0bb8c
@@ -982,7 +983,7 @@
Ivana Varekova 6d0bb8c
             G.cur_zipfile_bufstart = ftell((FILE *)G.zipfd);
Ivana Varekova 6d0bb8c
 #else /* !USE_STRM_INPUT */
Ivana Varekova 6d0bb8c
             G.cur_zipfile_bufstart =
Ivana Varekova 6d0bb8c
-              lseek(G.zipfd, bufstart, SEEK_SET);
Ivana Varekova 6d0bb8c
+              lseek64(G.zipfd, bufstart, SEEK_SET);
Ivana Varekova 6d0bb8c
 #endif /* ?USE_STRM_INPUT */
Ivana Varekova 6d0bb8c
             if ((G.incnt = read(G.zipfd, (char *)G.inbuf, INBUFSIZ)) <= 0)
Ivana Varekova 6d0bb8c
             {
Ivana Varekova 6d0bb8c
--- unzip-5.52/unix/Makefile.4GB	2005-12-22 13:39:54.767225712 +0100
Ivana Varekova 6d0bb8c
+++ unzip-5.52/unix/Makefile	2005-12-22 13:39:54.904204888 +0100
Ivana Varekova 6d0bb8c
@@ -783,7 +783,7 @@
Ivana Varekova 6d0bb8c
 # Linux (Posix, approximately SysV):  virtually any version since before 0.96,
Ivana Varekova 6d0bb8c
 # for any platform.  Change "-O" to "-O3" or whatever, as desired...
Ivana Varekova 6d0bb8c
 linux_noasm:	unix_make
Ivana Varekova 6d0bb8c
-	$(MAKE) unzips CC=gcc LD=gcc CF="$(RPM_OPT_FLAGS) -D_GNU_SOURCE -Wall -I. $(LOC)"
Ivana Varekova 6d0bb8c
+	$(MAKE) unzips CC=gcc LD=gcc CF="$(RPM_OPT_FLAGS) -D_LARGEFILE64_SOUCRE -D_GNU_SOURCE -Wall -I. $(LOC)"
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
 # Linux with lcc compiler:  __inline__ (stat.h) not recognized, and must edit
Ivana Varekova 6d0bb8c
 # /usr/include/gnu/types.h to get rid of "long long" if __LCC__ defined.  -O3
Ivana Varekova 6d0bb8c
--- unzip-5.52/unzpriv.h.4GB	2005-02-04 00:26:42.000000000 +0100
Ivana Varekova 6d0bb8c
+++ unzip-5.52/unzpriv.h	2005-12-22 13:39:54.905204736 +0100
Ivana Varekova 6d0bb8c
@@ -785,9 +785,9 @@
Ivana Varekova 6d0bb8c
 #endif
Ivana Varekova 6d0bb8c
 #ifndef SSTAT
Ivana Varekova 6d0bb8c
 #  ifdef WILD_STAT_BUG
Ivana Varekova 6d0bb8c
-#    define SSTAT(path,pbuf) (iswild(path) || stat(path,pbuf))
Ivana Varekova 6d0bb8c
+#    define SSTAT(path,pbuf) (iswild(path) || stat64(path,pbuf))
Ivana Varekova 6d0bb8c
 #  else
Ivana Varekova 6d0bb8c
-#    define SSTAT stat
Ivana Varekova 6d0bb8c
+#    define SSTAT stat64
Ivana Varekova 6d0bb8c
 #  endif
Ivana Varekova 6d0bb8c
 #endif
Ivana Varekova 6d0bb8c
 #ifndef STRNICMP
Ivana Varekova 6d0bb8c
--- unzip-5.52/list.c.4GB	2005-01-27 02:02:02.000000000 +0100
Ivana Varekova 6d0bb8c
+++ unzip-5.52/list.c	2005-12-22 13:39:54.908204280 +0100
Ivana Varekova 6d0bb8c
@@ -62,12 +62,12 @@
Ivana Varekova 6d0bb8c
      "%8lu  %-7s%8lu %4s  %02u%c%02u%c%02u %02u:%02u  %08lx %c";
Ivana Varekova 6d0bb8c
    static ZCONST char Far LongFileTrailer[] =
Ivana Varekova 6d0bb8c
      "--------          -------  ---                       \
Ivana Varekova 6d0bb8c
-     -------\n%8lu         %8lu %4s                            %lu file%s\n";
Ivana Varekova 6d0bb8c
+     -------\n%8ju         %8ju %4s                            %lu file%s\n";
Ivana Varekova 6d0bb8c
 #ifdef OS2_EAS
Ivana Varekova 6d0bb8c
    static ZCONST char Far ShortHdrStats[] =
Ivana Varekova 6d0bb8c
      "%9lu %6lu %6lu  %02u%c%02u%c%02u %02u:%02u  %c";
Ivana Varekova 6d0bb8c
    static ZCONST char Far ShortFileTrailer[] = " --------  -----  -----       \
Ivana Varekova 6d0bb8c
-            -------\n%9lu %6lu %6lu                   %lu file%s\n";
Ivana Varekova 6d0bb8c
+            -------\n%9ju %6lu %6lu                   %lu file%s\n";
Ivana Varekova 6d0bb8c
    static ZCONST char Far OS2ExtAttrTrailer[] =
Ivana Varekova 6d0bb8c
      "%lu file%s %lu bytes of OS/2 extended attributes attached.\n";
Ivana Varekova 6d0bb8c
    static ZCONST char Far OS2ACLTrailer[] =
Ivana Varekova 6d0bb8c
@@ -105,7 +105,8 @@
Ivana Varekova 6d0bb8c
     struct tm *t;
Ivana Varekova 6d0bb8c
 #endif
Ivana Varekova 6d0bb8c
     unsigned yr, mo, dy, hh, mm;
Ivana Varekova 6d0bb8c
-    ulg csiz, tot_csize=0L, tot_ucsize=0L;
Ivana Varekova 6d0bb8c
+    ulg csiz;
Ivana Varekova 6d0bb8c
+    unsigned long long tot_csize=0, tot_ucsize=0;
Ivana Varekova 6d0bb8c
 #ifdef OS2_EAS
Ivana Varekova 6d0bb8c
     ulg ea_size, tot_easize=0L, tot_eafiles=0L;
Ivana Varekova 6d0bb8c
     ulg acl_size, tot_aclsize=0L, tot_aclfiles=0L;
Ivana Varekova 6d0bb8c
--- unzip-5.52/unzip.h.4GB	2005-02-26 16:23:18.000000000 +0100
Ivana Varekova 6d0bb8c
+++ unzip-5.52/unzip.h	2005-12-22 13:39:54.909204128 +0100
Ivana Varekova 6d0bb8c
@@ -604,6 +604,8 @@
Ivana Varekova 6d0bb8c
 #define UZ_ST_CONTINUE          0
Ivana Varekova 6d0bb8c
 #define UZ_ST_BREAK             1
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
+#define MAX_ZIP_SIZE           0xffffdffe
Ivana Varekova 6d0bb8c
+
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
 /*---------------------------------------------------------------------------
Ivana Varekova 6d0bb8c
     Prototypes for public UnZip API (DLL) functions.
Ivana Varekova 6d0bb8c
--- unzip-5.52/fileio.c.4GB	2005-02-27 03:10:12.000000000 +0100
Ivana Varekova 6d0bb8c
+++ unzip-5.52/fileio.c	2005-12-22 13:59:17.959393624 +0100
Ivana Varekova 6d0bb8c
@@ -113,6 +113,9 @@
Ivana Varekova 6d0bb8c
 /* Strings used in fileio.c */
Ivana Varekova 6d0bb8c
 /****************************/
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
+static ZCONST char Far ZipFileTooBig[] =
Ivana Varekova 6d0bb8c
+  "error:  Zip file too big (greater than %lu bytes)\n";
Ivana Varekova 6d0bb8c
+
Ivana Varekova 6d0bb8c
 static ZCONST char Far CannotOpenZipfile[] =
Ivana Varekova 6d0bb8c
   "error:  cannot open zipfile [ %s ]\n        %s\n";
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
@@ -183,6 +186,7 @@
Ivana Varekova 6d0bb8c
 int open_input_file(__G)    /* return 1 if open failed */
Ivana Varekova 6d0bb8c
     __GDEF
Ivana Varekova 6d0bb8c
 {
Ivana Varekova 6d0bb8c
+    struct stat64 sb;
Ivana Varekova 6d0bb8c
     /*
Ivana Varekova 6d0bb8c
      *  open the zipfile for reading and in BINARY mode to prevent cr/lf
Ivana Varekova 6d0bb8c
      *  translation, which would corrupt the bitstreams
Ivana Varekova 6d0bb8c
@@ -201,9 +205,9 @@
Ivana Varekova 6d0bb8c
     G.zipfd = fopen(G.zipfn, FOPR);
Ivana Varekova 6d0bb8c
 #else /* !USE_STRM_INPUT */
Ivana Varekova 6d0bb8c
 # ifdef O_BINARY
Ivana Varekova 6d0bb8c
-    G.zipfd = open(G.zipfn, O_RDONLY | O_BINARY);
Ivana Varekova 6d0bb8c
+    G.zipfd = open(G.zipfn, O_RDONLY | O_BINARY | O_LARGEFILE);
Ivana Varekova 6d0bb8c
 # else
Ivana Varekova 6d0bb8c
-    G.zipfd = open(G.zipfn, O_RDONLY);
Ivana Varekova 6d0bb8c
+    G.zipfd = open(G.zipfn, O_RDONLY | O_LARGEFILE);
Ivana Varekova 6d0bb8c
 # endif
Ivana Varekova 6d0bb8c
 #endif /* ?USE_STRM_INPUT */
Ivana Varekova 6d0bb8c
 #endif /* ?CMS_MVS */
Ivana Varekova 6d0bb8c
@@ -221,6 +225,12 @@
Ivana Varekova 6d0bb8c
           G.zipfn, strerror(errno)));
Ivana Varekova 6d0bb8c
         return 1;
Ivana Varekova 6d0bb8c
     }
Ivana Varekova 6d0bb8c
+    fstat64(G.zipfd, &sb);
Ivana Varekova 6d0bb8c
+    if (sb.st_size > MAX_ZIP_SIZE) {
Ivana Varekova 6d0bb8c
+        Info(slide, 0x401, ((char *)slide,
Ivana Varekova 6d0bb8c
+                           LoadFarString(ZipFileTooBig),
Ivana Varekova 6d0bb8c
+                           ((ulg)MAX_ZIP_SIZE)));
Ivana Varekova 6d0bb8c
+    }
Ivana Varekova 6d0bb8c
     return 0;
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
 } /* end function open_input_file() */
Ivana Varekova 6d0bb8c
@@ -238,6 +248,7 @@
Ivana Varekova 6d0bb8c
 int open_outfile(__G)         /* return 1 if fail */
Ivana Varekova 6d0bb8c
     __GDEF
Ivana Varekova 6d0bb8c
 {
Ivana Varekova 6d0bb8c
+    int fd;
Ivana Varekova 6d0bb8c
 #ifdef DLL
Ivana Varekova 6d0bb8c
     if (G.redirect_data)
Ivana Varekova 6d0bb8c
         return (redirect_outfile(__G) == FALSE);
Ivana Varekova 6d0bb8c
@@ -259,7 +270,7 @@
Ivana Varekova 6d0bb8c
     }
Ivana Varekova 6d0bb8c
 #endif /* BORLAND_STAT_BUG */
Ivana Varekova 6d0bb8c
 #ifdef SYMLINKS
Ivana Varekova 6d0bb8c
-    if (SSTAT(G.filename, &G.statbuf) == 0 || lstat(G.filename,&G.statbuf) == 0)
Ivana Varekova 6d0bb8c
+    if (SSTAT(G.filename, &G.statbuf) == 0 || lstat64(G.filename,&G.statbuf) == 0)
Ivana Varekova 6d0bb8c
 #else
Ivana Varekova 6d0bb8c
     if (SSTAT(G.filename, &G.statbuf) == 0)
Ivana Varekova 6d0bb8c
 #endif /* ?SYMLINKS */
Ivana Varekova 6d0bb8c
@@ -413,7 +424,9 @@
Ivana Varekova 6d0bb8c
 #endif /* NOVELL_BUG_FAILSAFE */
Ivana Varekova 6d0bb8c
     Trace((stderr, "open_outfile:  doing fopen(%s) for writing\n",
Ivana Varekova 6d0bb8c
       FnFilter1(G.filename)));
Ivana Varekova 6d0bb8c
-    if ((G.outfile = fopen(G.filename, FOPW)) == (FILE *)NULL) {
Ivana Varekova 6d0bb8c
+    
Ivana Varekova 6d0bb8c
+    fd = open(G.filename, O_WRONLY | O_LARGEFILE | O_CREAT);
Ivana Varekova 6d0bb8c
+    if ((G.outfile = fdopen(fd, FOPW)) == (FILE *)NULL) {
Ivana Varekova 6d0bb8c
         Info(slide, 0x401, ((char *)slide, LoadFarString(CannotCreateFile),
Ivana Varekova 6d0bb8c
           FnFilter1(G.filename)));
Ivana Varekova 6d0bb8c
         return 1;
Ivana Varekova 6d0bb8c
@@ -682,7 +695,7 @@
Ivana Varekova 6d0bb8c
     Z_OFF_T inbuf_offset = request % INBUFSIZ;
Ivana Varekova 6d0bb8c
     Z_OFF_T bufstart = request - inbuf_offset;
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
-    if (request < 0) {
Ivana Varekova 6d0bb8c
+    if (request < 0) { 
Ivana Varekova 6d0bb8c
         Info(slide, 1, ((char *)slide, LoadFarStringSmall(SeekMsg),
Ivana Varekova 6d0bb8c
              G.zipfn, LoadFarString(ReportMsg)));
Ivana Varekova 6d0bb8c
         return(PK_BADERR);
Ivana Varekova 6d0bb8c
@@ -694,7 +707,7 @@
Ivana Varekova 6d0bb8c
         fseek(G.zipfd, bufstart, SEEK_SET);
Ivana Varekova 6d0bb8c
         G.cur_zipfile_bufstart = ftell(G.zipfd);
Ivana Varekova 6d0bb8c
 #else /* !USE_STRM_INPUT */
Ivana Varekova 6d0bb8c
-        G.cur_zipfile_bufstart = lseek(G.zipfd, bufstart, SEEK_SET);
Ivana Varekova 6d0bb8c
+        G.cur_zipfile_bufstart = lseek64(G.zipfd, bufstart, SEEK_SET);
Ivana Varekova 6d0bb8c
 #endif /* ?USE_STRM_INPUT */
Ivana Varekova 6d0bb8c
         Trace((stderr,
Ivana Varekova 6d0bb8c
           "       request = %ld, (abs+extra) = %ld, inbuf_offset = %ld\n",
Ivana Varekova 6d0bb8c
@@ -1850,7 +1863,7 @@
Ivana Varekova 6d0bb8c
         Trace((stderr, "check_for_newer:  doing lstat(%s)\n",
Ivana Varekova 6d0bb8c
           FnFilter1(filename)));
Ivana Varekova 6d0bb8c
         /* GRR OPTION:  could instead do this test ONLY if G.symlnk is true */
Ivana Varekova 6d0bb8c
-        if (lstat(filename, &G.statbuf) == 0) {
Ivana Varekova 6d0bb8c
+        if (lstat64(filename, &G.statbuf) == 0) {
Ivana Varekova 6d0bb8c
             Trace((stderr,
Ivana Varekova 6d0bb8c
               "check_for_newer:  lstat(%s) returns 0:  symlink does exist\n",
Ivana Varekova 6d0bb8c
               FnFilter1(filename)));
Ivana Varekova 6d0bb8c
@@ -1867,7 +1880,7 @@
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
 #ifdef SYMLINKS
Ivana Varekova 6d0bb8c
     /* GRR OPTION:  could instead do this test ONLY if G.symlnk is true */
Ivana Varekova 6d0bb8c
-    if (lstat(filename, &G.statbuf) == 0 && S_ISLNK(G.statbuf.st_mode)) {
Ivana Varekova 6d0bb8c
+    if (lstat64(filename, &G.statbuf) == 0 && S_ISLNK(G.statbuf.st_mode)) {
Ivana Varekova 6d0bb8c
         Trace((stderr, "check_for_newer:  %s is a symbolic link\n",
Ivana Varekova 6d0bb8c
           FnFilter1(filename)));
Ivana Varekova 6d0bb8c
         if (QCOND2 && !IS_OVERWRT_ALL)
Ivana Varekova 6d0bb8c
--- unzip-5.52/process.c.4GB	2004-11-22 01:42:54.000000000 +0100
Ivana Varekova 6d0bb8c
+++ unzip-5.52/process.c	2005-12-22 13:39:54.911203824 +0100
Ivana Varekova 6d0bb8c
@@ -923,8 +923,8 @@
Ivana Varekova 6d0bb8c
     Treat case of short zipfile separately.
Ivana Varekova 6d0bb8c
   ---------------------------------------------------------------------------*/
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
-    if (G.ziplen <= INBUFSIZ) {
Ivana Varekova 6d0bb8c
-        lseek(G.zipfd, 0L, SEEK_SET);
Ivana Varekova 6d0bb8c
+    if ((unsigned long)G.ziplen <= (unsigned long)INBUFSIZ) {
Ivana Varekova 6d0bb8c
+        lseek64(G.zipfd, 0L, SEEK_SET);
Ivana Varekova 6d0bb8c
         if ((G.incnt = read(G.zipfd,(char *)G.inbuf,(unsigned int)G.ziplen))
Ivana Varekova 6d0bb8c
             == (int)G.ziplen)
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
@@ -951,7 +951,7 @@
Ivana Varekova 6d0bb8c
             fseek((FILE *)G.zipfd, G.ziplen-tail_len, SEEK_SET);
Ivana Varekova 6d0bb8c
             G.cur_zipfile_bufstart = ftell((FILE *)G.zipfd);
Ivana Varekova 6d0bb8c
 #else /* !USE_STRM_INPUT */
Ivana Varekova 6d0bb8c
-            G.cur_zipfile_bufstart = lseek(G.zipfd, G.ziplen-tail_len,
Ivana Varekova 6d0bb8c
+            G.cur_zipfile_bufstart = lseek64(G.zipfd, G.ziplen-tail_len,
Ivana Varekova 6d0bb8c
               SEEK_SET);
Ivana Varekova 6d0bb8c
 #endif /* ?USE_STRM_INPUT */
Ivana Varekova 6d0bb8c
             if ((G.incnt = read(G.zipfd, (char *)G.inbuf,
Ivana Varekova 6d0bb8c
@@ -985,7 +985,7 @@
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
         for (i = 1;  !found && (i <= numblks);  ++i) {
Ivana Varekova 6d0bb8c
             G.cur_zipfile_bufstart -= INBUFSIZ;
Ivana Varekova 6d0bb8c
-            lseek(G.zipfd, G.cur_zipfile_bufstart, SEEK_SET);
Ivana Varekova 6d0bb8c
+            lseek64(G.zipfd, G.cur_zipfile_bufstart, SEEK_SET);
Ivana Varekova 6d0bb8c
             if ((G.incnt = read(G.zipfd,(char *)G.inbuf,INBUFSIZ))
Ivana Varekova 6d0bb8c
                 != INBUFSIZ)
Ivana Varekova 6d0bb8c
                 break;          /* fall through and fail */
Ivana Varekova 6d0bb8c
--- unzip-5.52/globals.h.4GB	2004-11-22 01:42:00.000000000 +0100
Ivana Varekova 6d0bb8c
+++ unzip-5.52/globals.h	2005-12-22 13:39:54.912203672 +0100
Ivana Varekova 6d0bb8c
@@ -256,7 +256,12 @@
Ivana Varekova 6d0bb8c
     local_file_hdr  lrec;          /* used in unzip.c, extract.c */
Ivana Varekova 6d0bb8c
     cdir_file_hdr   crec;          /* used in unzip.c, extract.c, misc.c */
Ivana Varekova 6d0bb8c
     ecdir_rec       ecrec;         /* used in unzip.c, extract.c */
Ivana Varekova 6d0bb8c
-    struct stat     statbuf;       /* used by main, mapname, check_for_newer */
Ivana Varekova 6d0bb8c
+#ifdef _LARGEFILE64_SOURCE
Ivana Varekova 6d0bb8c
+    struct stat64   statbuf;       /* used by main, mapname, check_for_newer */
Ivana Varekova 6d0bb8c
+#else
Ivana Varekova 6d0bb8c
+    struct stat   statbuf;       /* used by main, mapname, check_for_newer */
Ivana Varekova 6d0bb8c
+#endif
Ivana Varekova 6d0bb8c
+    
Ivana Varekova 6d0bb8c
 
Ivana Varekova 6d0bb8c
     int      mem_mode;
Ivana Varekova 6d0bb8c
     uch      *outbufptr;           /* extract.c static */