components/unzip/patches/CVE-2014-8141.patch
author Jiri Sasek <Jiri.Sasek@Oracle.COM>
Tue, 20 Jan 2015 05:18:57 -0800
branchs11-update
changeset 3678 96c88473320c
permissions -rw-r--r--
20298643 problem in UTILITY/ZIP
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3678
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     1
Source:
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     2
https://bugzilla.redhat.com/show_bug.cgi?id=1174856
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     3
Info:
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     4
http://www.ocert.org/advisories/ocert-2014-011.html
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     5
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     6
--- a/process.c	2009-03-06 02:25:10.000000000 +0100
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     7
+++ b/process.c	2014-12-05 22:42:39.000000000 +0100
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     8
@@ -1,5 +1,5 @@
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     9
 /*
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    10
-  Copyright (c) 1990-2009 Info-ZIP.  All rights reserved.
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    11
+  Copyright (c) 1990-2014 Info-ZIP.  All rights reserved.
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    12
 
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    13
   See the accompanying file LICENSE, version 2009-Jan-02 or later
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    14
   (the contents of which are also included in unzip.h) for terms of use.
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    15
@@ -1888,48 +1888,82 @@ int getZip64Data(__G__ ef_buf, ef_len)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    16
     and a 4-byte version of disk start number.
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    17
     Sets both local header and central header fields.  Not terribly clever,
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    18
     but it means that this procedure is only called in one place.
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    19
+
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    20
+    2014-12-05 SMS.
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    21
+    Added checks to ensure that enough data are available before calling
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    22
+    makeint64() or makelong().  Replaced various sizeof() values with
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    23
+    simple ("4" or "8") constants.  (The Zip64 structures do not depend
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    24
+    on our variable sizes.)  Error handling is crude, but we should now
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    25
+    stay within the buffer.
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    26
   ---------------------------------------------------------------------------*/
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    27
 
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    28
+#define Z64FLGS 0xffff
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    29
+#define Z64FLGL 0xffffffff
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    30
+
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    31
     if (ef_len == 0 || ef_buf == NULL)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    32
         return PK_COOL;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    33
 
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    34
     Trace((stderr,"\ngetZip64Data: scanning extra field of length %u\n",
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    35
       ef_len));
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    36
 
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    37
-    while (ef_len >= EB_HEADSIZE) {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    38
+    while (ef_len >= EB_HEADSIZE)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    39
+    {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    40
         eb_id = makeword(EB_ID + ef_buf);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    41
         eb_len = makeword(EB_LEN + ef_buf);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    42
 
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    43
-        if (eb_len > (ef_len - EB_HEADSIZE)) {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    44
-            /* discovered some extra field inconsistency! */
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    45
+        if (eb_len > (ef_len - EB_HEADSIZE))
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    46
+        {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    47
+            /* Extra block length exceeds remaining extra field length. */
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    48
             Trace((stderr,
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    49
               "getZip64Data: block length %u > rest ef_size %u\n", eb_len,
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    50
               ef_len - EB_HEADSIZE));
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    51
             break;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    52
         }
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    53
-        if (eb_id == EF_PKSZ64) {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    54
-
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    55
+        if (eb_id == EF_PKSZ64)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    56
+        {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    57
           int offset = EB_HEADSIZE;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    58
 
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    59
-          if (G.crec.ucsize == 0xffffffff || G.lrec.ucsize == 0xffffffff){
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    60
-            G.lrec.ucsize = G.crec.ucsize = makeint64(offset + ef_buf);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    61
-            offset += sizeof(G.crec.ucsize);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    62
+          if ((G.crec.ucsize == Z64FLGL) || (G.lrec.ucsize == Z64FLGL))
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    63
+          {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    64
+            if (offset+ 8 > ef_len)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    65
+              return PK_ERR;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    66
+
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    67
+            G.crec.ucsize = G.lrec.ucsize = makeint64(offset + ef_buf);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    68
+            offset += 8;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    69
           }
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    70
-          if (G.crec.csize == 0xffffffff || G.lrec.csize == 0xffffffff){
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    71
-            G.csize = G.lrec.csize = G.crec.csize = makeint64(offset + ef_buf);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    72
-            offset += sizeof(G.crec.csize);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    73
+
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    74
+          if ((G.crec.csize == Z64FLGL) || (G.lrec.csize == Z64FLGL))
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    75
+          {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    76
+            if (offset+ 8 > ef_len)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    77
+              return PK_ERR;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    78
+
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    79
+            G.csize = G.crec.csize = G.lrec.csize = makeint64(offset + ef_buf);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    80
+            offset += 8;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    81
           }
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    82
-          if (G.crec.relative_offset_local_header == 0xffffffff){
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    83
+
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    84
+          if (G.crec.relative_offset_local_header == Z64FLGL)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    85
+          {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    86
+            if (offset+ 8 > ef_len)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    87
+              return PK_ERR;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    88
+
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    89
             G.crec.relative_offset_local_header = makeint64(offset + ef_buf);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    90
-            offset += sizeof(G.crec.relative_offset_local_header);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    91
+            offset += 8;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    92
           }
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    93
-          if (G.crec.disk_number_start == 0xffff){
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    94
+
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    95
+          if (G.crec.disk_number_start == Z64FLGS)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    96
+          {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    97
+            if (offset+ 4 > ef_len)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    98
+              return PK_ERR;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    99
+
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   100
             G.crec.disk_number_start = (zuvl_t)makelong(offset + ef_buf);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   101
-            offset += sizeof(G.crec.disk_number_start);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   102
+            offset += 4;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   103
           }
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   104
+#if 0
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   105
+          break;                /* Expect only one EF_PKSZ64 block. */
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   106
+#endif /* 0 */
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   107
         }
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   108
 
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   109
-        /* Skip this extra field block */
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   110
+        /* Skip this extra field block. */
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   111
         ef_buf += (eb_len + EB_HEADSIZE);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   112
         ef_len -= (eb_len + EB_HEADSIZE);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   113
     }
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   114
--- a/fileio.c	2009-04-20 02:03:44.000000000 +0200
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   115
+++ b/fileio.c	2014-12-05 22:44:16.000000000 +0100
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   116
@@ -176,6 +176,8 @@ static ZCONST char Far FilenameTooLongTr
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   117
 #endif
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   118
 static ZCONST char Far ExtraFieldTooLong[] =
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   119
   "warning:  extra field too long (%d).  Ignoring...\n";
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   120
+static ZCONST char Far ExtraFieldCorrupt[] =
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   121
+  "warning:  extra field (type: 0x%04x) corrupt.  Continuing...\n";
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   122
 
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   123
 #ifdef WINDLL
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   124
    static ZCONST char Far DiskFullQuery[] =
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   125
@@ -2295,7 +2297,12 @@ int do_string(__G__ length, option)   /*
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   126
             if (readbuf(__G__ (char *)G.extra_field, length) == 0)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   127
                 return PK_EOF;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   128
             /* Looks like here is where extra fields are read */
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   129
-            getZip64Data(__G__ G.extra_field, length);
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   130
+            if (getZip64Data(__G__ G.extra_field, length) != PK_COOL)
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   131
+            {
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   132
+                Info(slide, 0x401, ((char *)slide,
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   133
+                 LoadFarString( ExtraFieldCorrupt), EF_PKSZ64));
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   134
+                error = PK_WARN;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   135
+            }
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   136
 #ifdef UNICODE_SUPPORT
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   137
             G.unipath_filename = NULL;
96c88473320c 20298643 problem in UTILITY/ZIP
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   138
             if (G.UzO.U_flag < 2) {