1<?xml version="1.0" encoding="UTF-8"?> 2<!-- 3 Licensed to the Apache Software Foundation (ASF) under one 4 or more contributor license agreements. See the NOTICE file 5 distributed with this work for additional information 6 regarding copyright ownership. The ASF licenses this file 7 to you under the Apache License, Version 2.0 (the 8 "License"); you may not use this file except in compliance 9 with the License. You may obtain a copy of the License at 10 11 http://www.apache.org/licenses/LICENSE-2.0 12 13 Unless required by applicable law or agreed to in writing, 14 software distributed under the License is distributed on an 15 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 KIND, either express or implied. See the License for the 17 specific language governing permissions and limitations 18 under the License. 19--> 20 21<!-- 22This file is also used by the maven-changes-plugin to generate the release notes. 23Useful ways of finding items to add to this file are: 24 251. Add items when you fix a bug or add a feature (this makes the 26release process easy :-). 27 282. Do a JIRA search for tickets closed since the previous release. 29 303. Use the report generated by the maven-changelog-plugin to see all 31SVN commits. TBA how to use this with SVN. 32 33To generate the release notes from this file: 34 35mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=m.n] 36 37The <action> type attribute can be add,update,fix,remove. 38--> 39 40<document> 41 <properties> 42 <title>commons-compress</title> 43 </properties> 44 <body> 45 <release version="1.19" date="not released, yet" 46 description="Release 1.19"> 47 <action type="fix" date="2018-09-07"> 48 ZipArchiveInputStream could forget the compression level has 49 changed under certain circumstances. 50 </action> 51 </release> 52 <release version="1.18" date="2018-08-16" 53 description="Release 1.18"> 54 <action type="fix" date="2018-06-15" due-to="DidierLoiseau"> 55 The example Expander class has been vulnerable to a path 56 traversal in the edge case that happens when the target 57 directory has a sibling directory and the name of the target 58 directory is a prefix of the sibling directory's name. 59 </action> 60 <action issue="COMPRESS-456" type="fix" date="2018-06-19"> 61 Changed the OSGi Import-Package to also optionally import 62 javax.crypto so encrypted archives can be read. 63 </action> 64 <action issue="COMPRESS-457" type="fix" date="2018-07-01"> 65 Changed various implementations of the close method to better 66 ensure all held resources get closed even if exceptions are 67 thrown during the closing the stream. 68 </action> 69 <action issue="COMPRESS-455" type="fix" date="2018-07-01"> 70 ZipArchiveInputStream can now detect the APK Signing Block 71 used in signed Android APK files and treats it as an "end of 72 archive" marker. 73 </action> 74 <action issue="COMPRESS-459" type="fix" date="2018-07-11" 75 due-to="Jens Reimann"> 76 The cpio streams didn't handle archives using a multi-byte 77 encoding properly. 78 </action> 79 <action issue="COMPRESS-460" type="add" date="2018-07-28" 80 due-to="Carmi Grushko"> 81 It is now possible to specify the arguments of zstd-jni's 82 ZstdOutputStream constructors via Commons Compress as well. 83 </action> 84 <action issue="COMPRESS-463" type="fix" date="2018-08-09"> 85 ZipArchiveInputStream#read would silently return -1 on a 86 corrupted stored entry and even return > 0 after hitting the 87 end of the archive. 88 </action> 89 <action issue="COMPRESS-462" type="fix" date="2018-08-10"> 90 ArArchiveInputStream#read would allow to read from the stream 91 without opening an entry at all. 92 </action> 93 </release> 94 <release version="1.17" date="2018-06-03" 95 description="Release 1.17"> 96 <action type="fix" date="2018-02-06"> 97 Removed the objenesis dependency from the pom as it is not 98 needed at all. 99 </action> 100 <action issue="COMPRESS-446" type="fix" date="2018-03-29"> 101 Fixed resource leak in ParallelScatterZipCreator#writeTo. 102 </action> 103 <action type="update" date="2018-04-01" due-to="Marchenko Sergey"> 104 Fixed some code examples. 105 Github Pull Request #63. 106 </action> 107 <action issue="COMPRESS-447" type="fix" date="2018-04-22"> 108 Certain errors when parsing ZIP extra fields in corrupt 109 archives are now turned into ZipException, they used to 110 manifest as ArrayIndexOutOfBoundsException before. 111 </action> 112 <action issue="COMPRESS-445" type="update" date="2018-04-22" 113 due-to="Andreas Beeker"> 114 The streams returned by ZipFile and most other decompressing 115 streams now provide information about the number of compressed 116 and uncompressed bytes read so far. This may be used to detect 117 a ZipBomb if the compression ratio exceeds a certain 118 threshold, for example. 119 For SevenZFile a new method returns the statistics for the 120 current entry. 121 </action> 122 <action issue="COMPRESS-443" type="add" date="2018-04-25"> 123 Added a unit test that is supposed to fail if we break the 124 OSGi manifest entries again. 125 </action> 126 <action issue="COMPRESS-449" type="add" date="2018-05-02"> 127 Add a new SkipShieldingInputStream class that can be used with 128 streams that throw an IOException when skip is invoked. 129 </action> 130 <action issue="COMPRESS-451" type="fix" date="2018-05-04"> 131 IOUtils.copy now verifies the buffer size is bigger than 0. 132 </action> 133 <action issue="COMPRESS-452" type="add" date="2018-05-09"> 134 New constructors have been added to SevenZFile that accept 135 char[]s rather than byte[]s in order to avoid a common error 136 of using the wrong encoding when creating the byte[]. This 137 change may break source compatibility for client code that 138 uses one of the constructors expecting a password and passes 139 in null as password. We recommend to change the code to use a 140 constructor without password argument. 141 </action> 142 <action issue="COMPRESS-453" type="update" date="2018-05-24"> 143 Added a workaround for a bug in AdoptOpenJDK for S/390 to 144 BZip2CompressorInputStream. 145 </action> 146 <action issue="COMPRESS-454" type="fix" date="2018-05-30"> 147 ZipArchiveInputStream failed to read some files with stored 148 entries using a data descriptor. 149 </action> 150 </release> 151 <release version="1.16.1" date="2018-02-10" 152 description="Release 1.16.1"> 153 <action issue="COMPRESS-442" type="fix" date="2018-02-06"> 154 Fixed the OSGi manifest entry for imports that has been broken 155 in 1.16. 156 </action> 157 </release> 158 <release version="1.16" date="2018-02-05" 159 description="Release 1.16"> 160 <action issue="COMPRESS-423" type="add" date="2017-10-17" 161 due-to="Andre F de Miranda"> 162 Add read-only support for Zstandard compression based on the 163 Zstd-jni project. 164 </action> 165 <action issue="COMPRESS-425" type="add" date="2017-10-22"> 166 Added auto-detection for Zstandard compressed streams. 167 </action> 168 <action issue="COMPRESS-430" type="fix" date="2017-11-25" 169 due-to="Bruno P. Kinoshita"> 170 Synchronized iteration over a synchronizedList in ParallelScatterZipCreator. 171 </action> 172 <action issue="COMPRESS-432" type="fix" date="2017-12-22"> 173 ZipFile could get stuck in an infinite loop when parsing ZIP 174 archives with certain strong encryption headers. 175 </action> 176 <action issue="COMPRESS-435" type="update" date="2017-12-27" 177 due-to="BELUGA BEHR"> 178 Replaces instanceof checks with a type marker in LZ77 support code. 179 </action> 180 <action issue="COMPRESS-426" type="add" date="2017-12-28"> 181 Added write-support for Zstandard compression. 182 </action> 183 <action issue="COMPRESS-424" type="fix" date="2017-12-30"> 184 Added improved checks to detect corrupted bzip2 streams and 185 throw the expected IOException rather than obscure 186 RuntimeExceptions. 187 </action> 188 <action type="update" date="2018-01-04"> 189 Updated XZ for Java dependency to 1.8 in order to pick up bug 190 fix to LZMA2InputStream's available method. 191 </action> 192 <action type="update" date="2018-01-05" issue="COMPRESS-429" 193 due-to="Damiano Albani"> 194 ZipArchiveEntry now exposes how the name or comment have been 195 determined when the entry was read. 196 </action> 197 <action issue="COMPRESS-380" type="add" date="2018-01-09" 198 due-to="Christian Marquez Grabia"> 199 Added read-only DEFLATE64 support to ZIP archives and as 200 stand-alone CompressorInputStream. 201 </action> 202 <action issue="COMPRESS-438" type="update" date="2018-01-10"> 203 ZipFile.getInputStream will now always buffer the stream 204 internally in order to improve read performance. 205 </action> 206 <action issue="COMPRESS-440" type="update" date="2018-01-12" 207 due-to="Dawid Weiss"> 208 Speed improvement for DEFLATE64 decompression. 209 </action> 210 <action issue="COMPRESS-437" type="add" date="2018-01-13"> 211 Added read-only DEFLATE64 support to 7z archives. 212 </action> 213 <action issue="COMPRESS-436" type="update" date="2018-01-14"> 214 Added a few extra sanity checks for the rarer compression 215 methods used in ZIP archives. 216 </action> 217 <action issue="COMPRESS-441" type="update" date="2018-01-14"> 218 Simplified the special handling for the dummy byte required by 219 zlib when using java.util.zip.Inflater. 220 </action> 221 <action type="update" date="2018-01-18" due-to="Shahab Kondri"> 222 Various code cleanups. 223 Github Pull Request #61. 224 </action> 225 <action type="update" date="2018-01-29"> 226 TarArchiveEntry's preserveLeadingSlashes constructor argument 227 has been renamed and can now also be used to preserve the 228 drive letter on Windows. 229 </action> 230 </release> 231 <release version="1.15" date="2017-10-17" 232 description="Release 1.15 233---------------------------------------- 234 235TarArchiveOutputStream now ensures record size is 512 and block size is 236a multiple of 512 as any other value would create invalid tar 237archives. This may break compatibility for code that deliberately 238wanted to create such files."> 239 <action issue="COMPRESS-394" type="fix" date="2017-05-22"> 240 Make sure "version needed to extract" in local file header and 241 central directory of a ZIP archive agree with each other. 242 Also ensure the version is set to 2.0 if DEFLATE is used. 243 </action> 244 <action issue="COMPRESS-395" type="fix" date="2017-05-22"> 245 Don't use a data descriptor in ZIP archives when copying a raw 246 entry that already knows its size and CRC information. 247 </action> 248 <action issue="COMPRESS-413" type="fix" date="2017-05-22" due-to="Simon Spero"> 249 Travis build redundantly repeats compilation and tests redundantly #43. 250 </action> 251 <action issue="COMPRESS-397" type="add" date="2017-05-22"> 252 Added magic MANIFEST entry Automatic-Module-Name so the module 253 name will be org.apache.commons.compress when the jar is used 254 as an automatic module in Java9. 255 </action> 256 <action issue="COMPRESS-396" type="fix" date="2017-05-23"> 257 The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for 258 Java. 259 </action> 260 <action issue="COMPRESS-406" type="fix" date="2017-06-12" 261 due-to="Simon Spero"> 262 BUILDING.md now passes the RAT check. 263 </action> 264 <action issue="COMPRESS-405" type="add" date="2017-06-15" 265 due-to="Simon Spero "> 266 Added a new utility class FixedLengthBlockOutputStream that 267 can be used to ensure writing always happens in blocks of a 268 given size. 269 </action> 270 <action issue="COMPRESS-412" type="fix" date="2017-06-17" 271 due-to="Michael Hausegger"> 272 Made sure ChecksumCalculatingInputStream receives valid 273 checksum and input stream instances via the constructor. 274 </action> 275 <action issue="COMPRESS-407" type="fix" date="2017-06-24" 276 due-to="Simon Spero "> 277 TarArchiveOutputStream now verifies the block and record sizes 278 specified at construction time are compatible with the tar 279 specification. In particular 512 is the only record size 280 accepted and the block size must be a multiple of 512. 281 At the same time the default block size in 282 TarArchiveOutputStream has been changed from 10240 to 512 283 bytes. 284 </action> 285 <action issue="COMPRESS-400" type="add" date="2017-06-26" 286 due-to="Simon Spero "> 287 It is now possible to specify/read custom PAX headers when 288 writing/reading tar archives. 289 </action> 290 <action issue="COMPRESS-415" type="fix" date="2017-06-27"> 291 Fixed class names of CpioArchiveEntry and 292 CpioArchiveInputStream in various Javadocs. 293 </action> 294 <action issue="COMPRESS-416" type="fix" date="2017-07-04" 295 due-to="Simon Spero "> 296 The code of the extended timestamp zip extra field incorrectly 297 assumed the time was stored as unsigned 32-bit int and thus 298 created incorrect results for years after 2037. 299 </action> 300 <action issue="COMPRESS-410" type="fix" date="2017-07-05" 301 due-to="Simon Spero "> 302 Removed ZipEncoding code that became obsolete when we started 303 to require Java 5 as baseline long ago. 304 </action> 305 <action issue="COMPRESS-417" type="fix" date="2017-07-19"> 306 The tar package will no longer try to parse the major and 307 minor device numbers unless the entry represents a character 308 or block special file. 309 </action> 310 <action issue="COMPRESS-421" type="fix" date="2017-10-06" 311 due-to="Roel Spilker"> 312 When reading tar headers with name fields containing embedded 313 NULs, the name will now be terminated at the first NUL byte. 314 </action> 315 <action issue="COMPRESS-409" type="fix" date="2017-10-08"> 316 Simplified TarArchiveOutputStream by replacing the internal 317 buffering with new class FixedLengthBlockOutputStream. 318 </action> 319 </release> 320 <release version="1.14" date="2017-05-14" 321 description="Release 1.14"> 322 <action issue="COMPRESS-378" type="fix" date="2017-01-09"> 323 SnappyCompressorInputStream slides the window too early 324 leading to ArrayIndexOutOfBoundsExceptions for some streams. 325 </action> 326 <action issue="COMPRESS-246" type="add" date="2017-01-10"> 327 Added write support for Snappy. 328 </action> 329 <action issue="COMPRESS-358" type="update" date="2017-01-10"> 330 The blocksize for FramedSnappyCompressorInputStream can now be 331 configured as some IWA files seem to be using blocks larger 332 than the default 32k. 333 </action> 334 <action issue="COMPRESS-379" type="fix" date="2017-01-15" 335 due-to="Guillaume Boué"> 336 ZipArchiveEntry#isUnixSymlink now only returns true if the 337 corresponding link flag is the only file-type flag set. 338 </action> 339 <action issue="COMPRESS-271" type="add" date="2017-02-07"> 340 Added support for LZ4 (block and frame format). 341 </action> 342 <action type="update" date="2017-02-15" due-to="Thomas Meyer"> 343 BZip2CompressorInputstream now uses BitInputStream internally. 344 Pull Request #13. 345 </action> 346 <action type="fix" date="2017-03-29" due-to="Daniel Collin"> 347 Fixed an integer overflow in CPIO's CRC calculation. 348 Pull Request #17. 349 </action> 350 <action issue="COMPRESS-385" type="add" date="2017-04-18"> 351 Add static detect(InputStream in) to CompressorStreamFactory 352 and ArchiveStreamFactory 353 </action> 354 <action issue="COMPRESS-387" type="fix" date="2017-04-18"> 355 Make unit tests work on Windows paths with spaces in their names. 356 </action> 357 <action issue="COMPRESS-388" type="update" date="2017-04-25" 358 due-to="Zbynek Vyskovsky"> 359 Improved performance for concurrent reads from ZipFile when 360 reading from a file. 361 </action> 362 <action issue="COMPRESS-382" type="add" date="2017-04-25" 363 due-to="Tim Allison"> 364 Added a way to limit amount of memory ZCompressorStream may 365 use. 366 </action> 367 <action issue="COMPRESS-386" type="add" date="2017-04-25" 368 due-to="Tim Allison"> 369 Added a way to limit amount of memory ZCompressorStream may 370 use. 371 </action> 372 <action issue="COMPRESS-382" type="add" date="2017-04-25" 373 due-to="Tim Allison"> 374 Added a way to limit amount of memory LZMACompressorStream and 375 XZCompressorInputStream may use. 376 </action> 377 <action issue="COMPRESS-389" type="fix" date="2017-04-26"> 378 Internal location pointer in ZipFile could get incremented 379 even if nothing had been read. 380 </action> 381 <action issue="COMPRESS-392" type="add" date="2017-05-02" due-to="Philippe Mouawad"> 382 Add Brotli decoder based on the Google Brotli library. 383 </action> 384 <action issue="COMPRESS-390" type="add" date="2017-05-04" 385 due-to="Zbynek Vyskovsky"> 386 ZipEntry now exposes its data offset. 387 </action> 388 <action issue="COMPRESS-393" type="fix" date="2017-05-07"> 389 LZMACompressorOutputStream#flush would throw an exception 390 rather than be the NOP it promised to be. 391 </action> 392 <action issue="COMPRESS-391" type="add" date="2017-05-11" 393 due-to="Zbynek Vyskovsky"> 394 Using ZipArchiveEntry's setAlignment it is now possible to 395 ensure the data offset of an entry starts at a file position 396 that at word or page boundaries. 397 A new extra field has been added for this purpose. 398 </action> 399 </release> 400 <release version="1.13" date="2016-12-29" 401 description="Release 1.13 - API compatible to 1.12 but requires Java 7 at runtime."> 402 <action issue="COMPRESS-360" type="update" date="2016-06-25" dev="ggregory"> 403 Update Java requirement from 6 to 7. 404 </action> 405 <action issue="COMPRESS-363" type="fix" date="2016-07-01"> 406 BitInputStream could return bad results when overflowing 407 internally - if two consecutive reads tried to read more than 408 64 bits. 409 </action> 410 <action issue="COMPRESS-366" type="update" date="2016-10-07"> 411 Clarified which TarArchiveEntry methods are useless for 412 entries read from an archive. 413 </action> 414 <action issue="COMPRESS-364" type="fix" date="2016-10-07" 415 due-to="Mike Mole"> 416 ZipArchiveInputStream.closeEntry does not properly advance to 417 next entry if there are junk bytes at end of data section 418 </action> 419 <action issue="COMPRESS-327" type="add" date="2016-10-12"> 420 SevenZFile, SevenZOutputFile, ZipFile and 421 ZipArchiveOutputStream can now work on non-file resources if 422 they can be accessed via SeekableByteChannel. 423 </action> 424 <action issue="COMPRESS-368" type="add" date="2016-11-15"> 425 Allow compressor extensions through a standard JRE ServiceLoader. 426 </action> 427 <action issue="COMPRESS-369" type="add" date="2016-11-15"> 428 Allow archive extensions through a standard JRE ServiceLoader. 429 </action> 430 <action issue="COMPRESS-373" type="add" date="2016-11-29"> 431 Add write support for the legacy LZMA format, this requires XZ 432 for Java 1.6. 433 </action> 434 <action issue="COMPRESS-374" type="add" date="2016-11-29"> 435 Add write support for the legacy LZMA stream to 7z, this 436 requires XZ for Java 1.6. 437 </action> 438 <action issue="COMPRESS-375" type="add" date="2016-12-04" 439 due-to="Plamen Totev"> 440 Allow the clients of ParallelScatterZipCreator to provide 441 ZipArchiveEntryRequestSupplier. 442 </action> 443 <action issue="COMPRESS-367" type="fix" date="2016-12-09" 444 due-to="Mike Mole"> 445 ZipArchiveInputStream now throws an Exception if it encounters 446 a broken ZIP archive rather than signaling end-of-archive. 447 </action> 448 <action issue="COMPRESS-377" type="fix" date="2016-12-20"> 449 ScatterZipOutputStream didn't close the StreamCompressor 450 causing a potential resource leak. 451 </action> 452 <action issue="COMPRESS-372" type="add" date="2016-12-20"> 453 Add a version-independent link to the API docs of the latest 454 release. 455 </action> 456 </release> 457 <release version="1.12" date="2016-06-21" 458 description="Release 1.12 - API compatible to 1.11 but requires Java 6 at runtime. 459------------ 460 461 462 463Release 1.12 changes the behavior of BZip2CompressorOutputStream's 464finalize method so that it no longer invokes finish. This is going to 465break code that relied on the finalizer to clean up an unfinished 466stream. The code will need to be changed to call finish or 467close itself. Note that a finalizer is not guaranteed to run, so 468the feature was not 100% effective in any case. 469"> 470 <action issue="COMPRESS-349" type="update" date="2016-04-09" dev="ggregory"> 471 Update requirement from Java 5 to 6. 472 </action> 473 <action issue="COMPRESS-350" type="update" date="2016-04-09" dev="ggregory"> 474 TarArchiveEntry wastefully allocates empty arrays. 475 </action> 476 <action issue="COMPRESS-348" type="fix" date="2016-04-24"> 477 SevenZFile.read() throws an IllegalStateException for empty entries. 478 </action> 479 <action issue="COMPRESS-353" type="update" date="2016-05-06" dev="ggregory"> 480 Javadoc for BZip2CompressorInputStream(InputStream, boolean) should refer to IOEx, not NPE. 481 </action> 482 <action issue="COMPRESS-354" type="update" date="2016-05-16"> 483 PureJavaCrc32C in the snappy package is now final so it is now 484 safe to call a virtual method inside the constructor. 485 </action> 486 <action issue="COMPRESS-355" type="fix" date="2016-05-20" 487 due-to="Jeremy Gustie"> 488 TarArchiveInputStream failed to parse PAX headers that 489 included blank lines. 490 </action> 491 <action issue="COMPRESS-356" type="fix" date="2016-05-20" 492 due-to="Jeremy Gustie"> 493 TarArchiveInputStream failed to parse PAX headers whose tar 494 entry name ended with a slash. 495 </action> 496 <action issue="COMPRESS-352" type="add" date="2016-05-22"> 497 FramedSnappyCompressorInputStream now supports the dialect of 498 Snappy used by the IWA files contained within the zip archives 499 used in Apple's iWork 13 files. 500 </action> 501 <action issue="COMPRESS-351" type="update" date="2016-06-07"> 502 ZipArchiveInputStream and CpioArchiveInputStream could throw 503 exceptions who's messages contained potentially corrupt entry 504 names read from a broken archive. They will now sanitize the 505 names by replacing unprintable characters and restricting the 506 length to 255 characters. 507 </action> 508 <action issue="COMPRESS-357" type="update" date="2016-06-15"> 509 BZip2CompressorOutputStream no longer tries to finish the 510 output stream in finalize. This is a breaking change for code 511 that relied on the finalizer. 512 </action> 513 </release> 514 <release version="1.11" date="2016-04-06" 515 description="Release 1.11"> 516 <action issue="COMPRESS-347" type="add" date="2016-03-23"> 517 TarArchiveInputStream now supports reading global PAX headers. 518 </action> 519 <action issue="COMPRESS-346" type="add" date="2016-03-23"> 520 The PAX headers for sparse entries written by star are now 521 applied. 522 </action> 523 <action issue="COMPRESS-345" type="add" date="2016-03-23"> 524 GNU sparse files using one of the PAX formats are now 525 detected, but cannot be extracted. 526 </action> 527 <action issue="COMPRESS-344" type="fix" date="2016-03-22"> 528 ArArchiveInputStream can now read GNU extended names that are 529 terminated with a NUL byte rather than a linefeed. 530 </action> 531 <action issue="COMPRESS-341" type="add" date="2016-03-20"> 532 New method SevenZFile.getEntries can be used to list the 533 contents of a 7z archive. 534 </action> 535 <action issue="COMPRESS-343" type="fix" date="2016-03-17" 536 due-to="Rene Preissel"> 537 Native Memory Leak in Sevenz-DeflateDecoder. 538 </action> 539 <action type="add" date="2016-03-05" 540 due-to="Matt Hovey"> 541 When using Zip64Mode.Always also use ZIP64 extensions inside 542 the central directory. 543 GitHub Pull Request #10 544 </action> 545 <action issue="COMPRESS-340" type="fix" date="2016-02-24" 546 due-to="Dawid Weiss"> 547 SevenZFile will now only try to drain an entry's content when 548 moving on to the next entry if data is read from the next 549 entry. This should improve performance for applications that 550 try to skip over entries. 551 </action> 552 <action issue="COMPRESS-336" type="fix" date="2016-02-14"> 553 file names of tar archives using the xstar format are now 554 parsed properly. 555 </action> 556 <action issue="COMPRESS-335" type="fix" date="2016-02-05"> 557 checksums of tars that pad the checksum field to the left are 558 now calculated properly. 559 </action> 560 <action issue="COMPRESS-334" type="fix" date="2016-02-05" 561 due-to="Jeremy Gustie"> 562 ArArchiveInputStream failed to read past the first entry when 563 BSD long names have been used. 564 </action> 565 <action issue="COMPRESS-333" type="fix" date="2016-02-03" due-to="Dawid Weiss"> 566 Added buffering for random access which speeds up 7Z support. 567 </action> 568 <action issue="COMPRESS-331" type="fix" date="2016-01-31"> 569 The checksum validation of TararchiveEntry is now as strict as 570 the validation of GNU tar, which eliminates a few cases of 571 false positives of ArchiveStreamFactory. 572 This behavior is a breaking change since the check has become 573 more strict but any archive that fails the checksum test now 574 would also fail it when extracted with other tools and must be 575 considered an invalid archive. 576 </action> 577 <action issue="COMPRESS-323" type="add" date="2016-01-29"> 578 ZipFile.getRawInputStream() is now part of the public API 579 </action> 580 <action issue="COMPRESS-332" type="fix" date="2016-01-29"> 581 SnappyCompressorInputStream and 582 FramedSnappyCompressorInputStream returned 0 at the end of the 583 stream under certain circumstances. 584 </action> 585 <action type="add" date="2016-01-27" due-to="Jason van Zyl"> 586 Allow byte-for-byte replication of Zip entries. 587 GitHub Pull Request #6. 588 </action> 589 <action issue="COMPRESS-328" type="add" date="2016-01-15"> 590 TarArchiveEntry's preserveLeadingSlashes is now a property and used 591 on later calls to setName, too. 592 This behavior is a breaking change. 593 </action> 594 <action issue="COMPRESS-326" type="fix" date="2015-10-24"> 595 Adjusted unit test to updates in Java8 and later that change 596 the logic of ZipEntry#getTime. 597 </action> 598 <action issue="COMPRESS-324" type="fix" date="2015-10-06"> 599 TarArchiveOutputStream will now recognize GNU long name and 600 link entries even if the special entry has a different name 601 than GNU tar uses itself. This seems to be the case for 602 archives created by star. 603 </action> 604 <action issue="COMPRESS-321" type="fix" date="2015-08-22"> 605 ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra 606 fields are read from the central directory. 607 </action> 608 <action type="add" date="2015-11-11" due-to="Sören Glimm"> 609 Added read-only support for bzip2 compression used inside of 610 ZIP archives. 611 GitHub Pull Request #4. 612 </action> 613 </release> 614 615 <release version="1.10" date="2015-08-18" 616 description="Release 1.10 617------------ 618 619 620 621Release 1.10 moves the former 622org.apache.commons.compress.compressors.z._internal_ package which 623breaks backwards compatibility for code which used the old package. 624This also changes the superclass of ZCompressorInputStream. 625"> 626 627 <action issue="COMPRESS-317" type="fix" date="2015-06-09" 628 due-to="Lucas Werkmeister"> 629 ArrayIndexOutOfBoundsException when ZIP extra fields are read 630 and the entry contains an UnparseableExtraField. 631 </action> 632 <action issue="COMPRESS-316" type="add" date="2015-05-23" 633 due-to="Nick Burch"> 634 CompressorStreamFactory can now auto-detect DEFLATE streams 635 with ZLIB header. 636 </action> 637 <action issue="COMPRESS-314" type="fix" date="2015-05-08"> 638 TarArchiveInputStream can now read entries with group or 639 user ids > 0x80000000. 640 </action> 641 <action issue="COMPRESS-315" type="fix" date="2015-05-06"> 642 TarArchiveOutputStream can now write entries with group or 643 user ids > 0x80000000. 644 </action> 645 <action issue="COMPRESS-313" type="add" date="2015-03-30"> 646 CompressorStreamFactory can now auto-detect LZMA streams. 647 </action> 648 <action issue="COMPRESS-312" type="fix" date="2015-03-28"> 649 TarArchiveEntry's constructor with a File and a String arg 650 didn't normalize the name. 651 </action> 652 <action issue="COMPRESS-308" type="fix" date="2015-02-20"> 653 ZipEncodingHelper no longer reads system properties directly 654 to determine the default charset. 655 </action> 656 <action issue="COMPRESS-309" type="fix" date="2015-02-20"> 657 BZip2CompressorInputStream#read would return -1 when asked to 658 read 0 bytes. 659 </action> 660 <action issue="COMPRESS-306" type="fix" date="2015-02-17"> 661 ArchiveStreamFactory fails to pass on the encoding when creating some streams. 662 * ArjArchiveInputStream 663 * CpioArchiveInputStream 664 * DumpArchiveInputStream 665 * JarArchiveInputStream 666 * TarArchiveInputStream 667 * JarArchiveOutputStream 668 </action> 669 <action issue="COMPRESS-302" type="fix" date="2015-02-16"> 670 Restore immutability/thread-safety to ArchiveStreamFactory. 671 The class is now immutable provided that the method setEntryEncoding is not used. 672 The class is thread-safe. 673 </action> 674 <action issue="COMPRESS-303" type="fix" date="2015-02-16"> 675 Restore immutability/thread-safety to CompressorStreamFactory. 676 The class is now immutable provided that the method setDecompressConcatenated is not used. 677 The class is thread-safe. 678 </action> 679 <action issue="COMPRESS-298" type="fix" date="2015-01-20"> 680 SevenZFile now throws the specific PasswordRequiredException 681 when it encounters an encrypted stream but no password has 682 been specified. 683 </action> 684 <action issue="COMPRESS-290" type="fix" date="2015-01-13" 685 due-to="Kristian Rosenvold"> 686 Improved error message when tar encounters a groupId that is 687 too big to write without using the STAR or POSIX format. 688 </action> 689 <action issue="COMPRESS-296" type="add" date="2015-01-10" 690 due-to="Kristian Rosenvold"> 691 Added support for parallel compression. This low-level API allows 692 a client to build a zip/jar file by using the class 693 org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator. 694 695 Zip documentation updated with further notes about parallel features. 696 697 Please note that some aspects of jar creation need to be 698 handled by client code and is not part of commons-compress for this 699 release. 700 </action> 701 <action type="add" date="2014-12-24" 702 due-to="Kristian Rosenvold"> 703 Cut overall object instantiation in half by changing file 704 header generation algorithm, for a 10-15 percent performance 705 improvement. 706 707 Also extracted two private methods createLocalFileHeader 708 and createCentralFileHeader in ZipArchiveOutputStream. 709 These may have some interesting additional usages in the 710 near future. 711 </action> 712 <action issue="COMPRESS-297" type="fix" date="2014-12-22"> 713 ZipFile logs a warning in its finalizer when its constructor 714 has thrown an exception reading the file - for example if the 715 file doesn't exist. 716 </action> 717 <action issue="COMPRESS-295" type="add" date="2014-12-18" 718 due-to="Kristian Rosenvold"> 719 New methods in ZipArchiveOutputStream and ZipFile allows 720 entries to be copied from one archive to another without 721 having to re-compress them. 722 </action> 723 <action type="update" date="2014-10-28" 724 due-to="Damjan Jovanovic"> 725 Moved the package 726 org.apache.commons.compress.compressors.z._internal_ to 727 org.apache.commons.compress.compressors.lzw and made it part 728 of the API that is officially supported. This will break 729 existing code that uses the old package. 730 </action> 731 </release> 732 733 <release version="1.9" date="2014-10-09" 734 description="Release 1.9"> 735 <action type="add" date="2014-06-14" issue="COMPRESS-263" 736 due-to="Matthias Stevens"> 737 Added support for DEFLATE streams without any gzip framing. 738 </action> 739 <action type="fix" date="2014-08-14" issue="COMPRESS-287"> 740 When reading 7z files unknown file properties and properties 741 of type kDummy are now ignored. 742 </action> 743 <action type="fix" date="2014-08-21" issue="COMPRESS-286"> 744 Expanding 7z archives using LZMA compression could cause an 745 EOFException. 746 </action> 747 <action type="update" date="2014-08-31" issue="COMPRESS-285"> 748 Checking for XZ for Java may be expensive. The result will 749 now be cached outside of an OSGi environment. You can use the 750 new XZUtils#setCacheXZAvailability to overrride this default 751 behavior. 752 </action> 753 <action type="fix" date="2014-09-19" issue="COMPRESS-289" 754 due-to="Bob Robertson"> 755 Long-Name and -link or PAX-header entries in TAR archives 756 always had the current time as last modfication time, creating 757 archives that are different at the byte level each time an 758 archive was built. 759 </action> 760 </release> 761 762 <release version="1.8.1" date="2014-05-14" 763 description="Release 1.8.1"> 764 <action type="update" date="2014-03-19"> 765 The dependency on org.tukaani:xz is now marked as optional. 766 </action> 767 <action type="fix" date="2014-03-28" issue="COMPRESS-270"> 768 The snappy, ar and tar inputstreams might fail to read from a 769 non-buffered stream in certain cases. 770 </action> 771 <action type="add" date="2014-04-12" issue="COMPRESS-272"> 772 CompressorStreamFactory can now auto-detect Unix compress 773 (".Z") streams. 774 </action> 775 <action type="fix" date="2014-04-12" issue="COMPRESS-277"> 776 IOUtils#skip might skip fewer bytes than requested even though 777 more could be read from the stream. 778 </action> 779 <action type="fix" date="2014-04-13" issue="COMPRESS-276"> 780 ArchiveStreams now validate there is a current entry before 781 reading or writing entry data. 782 </action> 783 <action type="fix" date="2014-04-13"> 784 ArjArchiveInputStream#canReadEntryData tested the current 785 entry of the stream rather than its argument. 786 </action> 787 <action type="fix" date="2014-04-13" issue="COMPRESS-274"> 788 ChangeSet#delete and deleteDir now properly deal with unnamed 789 entries. 790 </action> 791 <action type="fix" date="2014-04-18" issue="COMPRESS-273"> 792 Added a few null checks to improve robustness. 793 </action> 794 <action type="fix" date="2014-04-19" issue="COMPRESS-278"> 795 TarArchiveInputStream failed to read archives with empty 796 gid/uid fields. 797 </action> 798 <action type="fix" date="2014-04-27" issue="COMPRESS-279"> 799 TarArchiveInputStream now again throws an exception when it 800 encounters a truncated archive while reading from the last 801 entry. 802 </action> 803 <action type="fix" date="2014-05-02" issue="COMPRESS-280" 804 due-to="BELUGA BEHR"> 805 Adapted TarArchiveInputStream#skip to the modified 806 IOUtils#skip method. 807 </action> 808 </release> 809 <release version="1.8" date="2014-03-12" 810 description="Release 1.8"> 811 <action issue="COMPRESS-253" type="fix" date="2014-01-20"> 812 BZip2CompressorInputStream read fewer bytes than possible from 813 a truncated stream. 814 </action> 815 <action issue="COMPRESS-253" type="fix" date="2014-01-22"> 816 SevenZFile failed claiming the dictionary was too large when 817 archives used LZMA compression for headers and content and 818 certain non-default dictionary sizes. 819 </action> 820 <action issue="COMPRESS-259" type="fix" date="2014-01-24"> 821 CompressorStreamFactory.createCompressorInputStream with 822 explicit compression did not honor decompressConcatenated 823 </action> 824 <action issue="COMPRESS-260" type="add" date="2014-02-20"> 825 GzipCompressorInputStream now provides access to the same 826 metadata that can be provided via GzipParameters when writing 827 a gzip stream. 828 </action> 829 <action issue="COMPRESS-262" type="fix" date="2014-02-21"> 830 TarArchiveInputStream will now read archives created by tar 831 implementations that encode big numbers by not adding a 832 trailing NUL. 833 </action> 834 <action issue="COMPRESS-264" type="fix" date="2014-02-21"> 835 ZipArchiveInputStream would return NUL bytes for the first 512 836 bytes of a STORED entry if it was the very first entry of the 837 archive. 838 </action> 839 <action issue="COMPRESS-265" type="fix" date="2014-02-22"> 840 When writing PAX/POSIX headers for TAR entries with 841 backslashes or certain non-ASCII characters in their name 842 TarArchiveOutputStream could fail. 843 </action> 844 <action issue="COMPRESS-267" type="fix" date="2014-02-22"> 845 ArchiveStreamFactory now throws a StreamingNotSupported - a 846 new subclass of ArchiveException - if it is asked to read from 847 or write to a stream and Commons Compress doesn't support 848 streaming for the format. This currently only applies to the 849 7z format. 850 </action> 851 <action issue="COMPRESS-266" type="add" date="2014-02-25"> 852 SevenZOutputFile now supports chaining multiple 853 compression/encryption/filter methods and passing options to 854 the methods. 855 </action> 856 <action issue="COMPRESS-261" type="add" date="2014-02-26"> 857 The (compression) method(s) can now be specified per entry in 858 SevenZOutputFile. 859 </action> 860 <action issue="COMPRESS-258" type="add" date="2014-02-26"> 861 SevenZArchiveEntry "knows" which method(s) have been used to 862 write it to the archive. 863 </action> 864 <action type="add" date="2014-02-28"> 865 The 7z package now supports the delta filter as method. 866 </action> 867 <action issue="COMPRESS-257" type="add" date="2014-03-03"> 868 The 7z package now supports BCJ filters for several platforms. 869 You will need a version >= 1.5 of XZ for Java to read archives 870 using BCJ, though. 871 </action> 872 </release> 873 <release version="1.7" date="2014-01-20" 874 description="Release 1.7"> 875 <action issue="COMPRESS-241" type="fix" date="2013-10-27"> 876 SevenZOutputFile#closeArchiveEntry throws an exception when 877 using LZMA2 compression on Java8. 878 </action> 879 <action issue="COMPRESS-147" type="add" date="2013-11-07" 880 due-to="BELUGA BEHR"> 881 Read-Only support for Snappy compression. 882 </action> 883 <action issue="COMPRESS-244" type="fix" date="2013-11-27" 884 due-to="Nico Kruber"> 885 7z reading of big 64bit values could be wrong. 886 </action> 887 <action issue="COMPRESS-243" type="add" date="2013-11-30" 888 due-to="Damjan Jovanovic"> 889 Read-Only support for .Z compressed files. 890 </action> 891 <action type="add" date="2013-12-06" due-to="Damjan Jovanovic"> 892 ZipFile and ZipArchiveInputStream now support reading entries compressed using the 893 SHRINKING method. 894 </action> 895 <action issue="COMPRESS-245" type="fix" date="2013-12-06"> 896 TarArchiveInputStream could fail to read an archive completely. 897 </action> 898 <action issue="COMPRESS-242" type="fix" date="2013-12-08"> 899 The time-setters in X5455_ExtendedTimestamp now set the 900 corresponding flags explicitly - i.e. they set the bit if the 901 valus is not-null and reset it otherwise. This may cause 902 incompatibilities if you use setFlags to unset a bit and later 903 set the time to a non-null value - the flag will now be set. 904 </action> 905 <action issue="COMPRESS-250" type="add" date="2013-12-16" due-to="Emmanuel Bourg"> 906 GzipCompressorOutputStream now supports setting the compression level and the header metadata 907 (filename, comment, modification time, operating system and extra flags) 908 </action> 909 <action issue="COMPRESS-115" type="add" date="2013-12-19" due-to="Emmanuel Bourg"> 910 ZipFile and ZipArchiveInputStream now support reading entries compressed using the IMPLODE method. 911 </action> 912 <action issue="COMPRESS-252" type="fix" date="2013-12-20"> 913 SevenZOutputFile would create invalid archives if more than 914 six empty files or directories were included. 915 </action> 916 <action type="add" date="2013-12-20"> 917 ZipFile and the 7z file classes now implement Closeable and 918 can be used in try-with-resources constructs. 919 </action> 920 </release> 921 <release version="1.6" date="2013-10-26" 922 description="Release 1.6"> 923 <action type="fix" date="2013-04-25" issue="COMPRESS-223" 924 due-to="Jeremy Gustie"> 925 TarBuffer.tryToConsumeSecondEOFRecord could throw a 926 NullPointerException 927 </action> 928 <action type="add" date="2013-05-07" issue="COMPRESS-54" 929 due-to="Damjan Jovanovic"> 930 Added support for 7z archives. Most compression algorithms 931 can be read and written, LZMA and encryption are only 932 supported when reading. 933 </action> 934 <action type="add" date="2013-05-19" issue="COMPRESS-226" 935 due-to="Damjan Jovanovic"> 936 Added read-only support for ARJ archives that don't use 937 compression. 938 </action> 939 <action type="fix" date="2013-05-26" issue="COMPRESS-228"> 940 Parsing of zip64 extra fields has become more lenient in order 941 to be able to read archives created by DotNetZip and maybe 942 other archivers as well. 943 </action> 944 <action type="fix" date="2013-06-03" issue="COMPRESS-229" 945 due-to="Christoph Gysin"> 946 TAR will now properly read the names of symbolic links with 947 long names that use the GNU variant to specify the long file 948 name. 949 </action> 950 <action type="fix" date="2013-06-04" issue="COMPRESS-227"> 951 ZipFile#getInputStream could return null if the archive 952 contained duplicate entries. 953 The class now also provides two new methods to obtain all 954 entries of a given name rather than just the first one. 955 </action> 956 <action type="update" date="2013-07-08" issue="COMPRESS-232" 957 due-to="BELUGA BEHR"> 958 Readabilty patch to TarArchiveInputStream. 959 </action> 960 <action type="update" date="2013-08-08" issue="COMPRESS-234" 961 due-to="BELUGA BEHR"> 962 Performance improvements to TarArchiveInputStream, in 963 particular to the skip method. 964 </action> 965 <action type="fix" date="2013-08-08" issue="COMPRESS-236" 966 due-to="Andrew Duffy"> 967 CpioArchiveInputStream failed to read archives created by 968 Redline RPM. 969 </action> 970 <action type="fix" date="2013-08-09" issue="COMPRESS-237" 971 due-to="Emmanuel Bourg"> 972 TarArchiveOutputStream now properly handles link names that 973 are too long to fit into a traditional TAR header. 974 </action> 975 <action type="add" date="2013-08-10"> 976 DumpArchiveInputStream now supports an encoding parameter that 977 can be used to specify the encoding of file names. 978 </action> 979 <action type="add" date="2013-08-10"> 980 The CPIO streams now support an encoding parameter that can be 981 used to specify the encoding of file names. 982 </action> 983 <action type="add" date="2013-09-22" issue="COMPRESS-111"> 984 Read-only support for LZMA standalone compression has been added. 985 </action> 986 <action type="fix" date="2013-10-04" issue="COMPRESS-239"> 987 The auto-detecting create*InputStream methods of Archive and 988 CompressorStreamFactory could fail to detect the format of 989 blocking input streams. 990 </action> 991 <action type="fix" date="2013-10-21" issue="COMPRESS-240" 992 due-to="Gary Gregory"> 993 ZipEncodingHelper.isUTF8(String) does not check all UTF-8 aliases. 994 </action> 995 </release> 996 <release version="1.5" date="2013-03-14" 997 description="Release 1.5"> 998 <action type="fix" date="2012-02-19" issue="COMPRESS-218" 999 due-to="Gili"> 1000 Typo in CompressorStreamFactory Javadoc 1001 </action> 1002 <action type="update" date="2012-07-08" issue="COMPRESS-188" 1003 due-to="Harald Kuhn"> 1004 Improved exception message if a zip archive cannot be read 1005 because of an unsupported compression method. 1006 </action> 1007 <action type="update" date="2012-07-07" issue="COMPRESS-192" 1008 due-to="Jukka Zitting"> 1009 ArchiveStreamFactory has a setting for file name encoding that 1010 sets up encoding for ZIP and TAR streams. 1011 </action> 1012 <action type="fix" date="2012-07-07" issue="COMPRESS-191" 1013 due-to="Jukka Zitting"> 1014 ArchiveStreamFactory's tar stream detection created false 1015 positives for AIFF files. 1016 </action> 1017 <action type="update" date="2012-07-07" issue="COMPRESS-191" 1018 due-to="Jukka Zitting"> 1019 TarArchiveEntry now has a method to verify its checksum. 1020 </action> 1021 <action type="fix" date="2012-12-27" issue="COMPRESS-199" 1022 due-to="Jukka Zitting"> 1023 XZ for Java didn't provide an OSGi bundle. Compress' 1024 dependency on it has now been marked optional so Compress 1025 itself can still be used in an OSGi context. 1026 </action> 1027 <action type="fix" date="2012-12-27" issue="COMPRESS-200" 1028 due-to="Christian Schlichtherle"> 1029 When specifying the encoding explicitly TarArchiveOutputStream 1030 would write unreadable names in GNU mode or even cause errors 1031 in POSIX mode for file names longer than 66 characters. 1032 </action> 1033 <action type="fix" date="2012-12-27" issue="COMPRESS-203"> 1034 Writing TAR PAX headers failed if the generated entry name 1035 ended with a "/". 1036 </action> 1037 <action type="fix" date="2012-12-28" issue="COMPRESS-189" 1038 due-to="Daniel Lowe"> 1039 ZipArchiveInputStream sometimes failed to provide input to the 1040 Inflater when it needed it, leading to reads returning 0. 1041 </action> 1042 <action type="update" date="2013-01-01"> 1043 Split/spanned ZIP archives are now properly detected by 1044 ArchiveStreamFactory but will cause an 1045 UnsupportedZipFeatureException when read. 1046 </action> 1047 <action type="update" date="2013-01-01" issue="COMPRESS-208"> 1048 ZipArchiveInputStream now reads archives that start with a 1049 "PK00" signature. Archives with this signatures are created 1050 when the archiver was willing to split the archive but in the 1051 end only needed a single segment - so didn't split anything. 1052 </action> 1053 <action type="update" date="2013-01-01" issue="COMPRESS-201"> 1054 TarArchiveEntry has a new constructor that allows setting 1055 linkFlag and preserveLeadingSlashes at the same time. 1056 </action> 1057 <action type="update" date="2013-01-01" issue="COMPRESS-159"> 1058 ChangeSetPerformer has a new perform overload that uses a 1059 ZipFile instance as input. 1060 </action> 1061 <action type="fix" date="2013-01-04" issue="COMPRESS-212"> 1062 TarArchiveInputStream ignored the encoding for GNU long name 1063 entries. 1064 </action> 1065 <action type="update" date="2013-01-05" issue="COMPRESS-172" 1066 due-to="Thomas Mair"> 1067 Garbage collection pressure has been reduced by reusing 1068 temporary byte arrays in classes. 1069 </action> 1070 <action type="update" date="2013-01-08" issue="COMPRESS-210" 1071 due-to="Julius Davies"> 1072 Can now handle zip extra field 0x5455 - Extended Timestamp. 1073 </action> 1074 <action type="update" date="2013-01-07" issue="COMPRESS-211" 1075 due-to="Julius Davies"> 1076 handle zip extra field 0x7875 - Info Zip New Unix Extra Field. 1077 </action> 1078 <action type="update" date="2013-01-07" issue="COMPRESS-213" 1079 due-to="Julius Davies"> 1080 ZipShort, ZipLong, ZipEightByteInteger should implement Serializable 1081 </action> 1082 <action type="update" date="2013-01-14" issue="COMPRESS-214" 1083 due-to="Julius Davies"> 1084 better support for unix symlinks in ZipFile entries 1085 </action> 1086 <action type="update" date="2013-01-19" issue="COMPRESS-215" 1087 due-to="Robin Power"> 1088 ZipFile's initialization has been improved for non-Zip64 1089 archives. 1090 </action> 1091 <action type="fix" date="2013-01-20" issue="COMPRESS-206" 1092 due-to="Peter De Maeyer"> 1093 TarArchiveInputStream could leave the second EOF record 1094 inside the stream it had just finished reading. 1095 </action> 1096 <action type="fix" date="2013-01-20"> 1097 DumpArchiveInputStream no longer implicitly closes the 1098 original input stream when it reaches the end of the 1099 archive. 1100 </action> 1101 <action type="fix" date="2013-01-22"> 1102 ZipArchiveInputStream now consumes the remainder of the 1103 archive when getNextZipEntry returns null. 1104 </action> 1105 <action type="fix" date="2013-01-27" issue="COMPRESS-205" 1106 due-to="Daniel Lowe"> 1107 Unit tests could fail if the source tree was checked out to 1108 a directory tree containign spaces. 1109 </action> 1110 <action type="update" date="2013-01-31"> 1111 Updated XZ for Java dependency to 1.2 as this version 1112 provides proper OSGi manifest attributes. 1113 </action> 1114 <action type="fix" date="2013-02-20" issue="COMPRESS-219"> 1115 Fixed a potential ArrayIndexOutOfBoundsException when 1116 reading STORED entries from ZipArchiveInputStream. 1117 </action> 1118 <action type="fix" date="2013-03-07" issue="COMPRESS-221"> 1119 CompressorStreamFactory can now be used without XZ for Java 1120 being available. 1121 </action> 1122 <action type="add" date="2013-03-07" issue="COMPRESS-220"> 1123 CompressorStreamFactory has an option to create 1124 decompressing streams that decompress the full input for 1125 formats that support multiple concatenated streams. 1126 </action> 1127 </release> 1128 <release version="1.4.1" date="2012-05-23" 1129 description="Release 1.4.1"> 1130 <action type="fix" date="2012-05-20"> 1131 Ported libbzip2's fallback sort algorithm to 1132 BZip2CompressorOutputStream to speed up compression in certain 1133 edge cases. 1134 Using specially crafted inputs this can be used as a denial 1135 of service attack. See the security reports page for details. 1136 </action> 1137 </release> 1138 <release version="1.4" date="2012-04-11" 1139 description="Release 1.4"> 1140 <action issue="COMPRESS-183" type="fix" date="2012-03-24"> 1141 The tar package now allows the encoding of file names to be 1142 specified and can optionally use PAX extension headers to 1143 write non-ASCII file names. 1144 The stream classes now write (or expect to read) archives that 1145 use the platform's native encoding for file names. Apache 1146 Commons Compress 1.3 used to strip everything but the lower 1147 eight bits of each character which effectively only worked for 1148 ASCII and ISO-8859-1 file names. 1149 This new default behavior is a breaking change. 1150 </action> 1151 <action issue="COMPRESS-184" type="fix" date="2012-03-23"> 1152 TarArchiveInputStream failed to parse PAX headers that 1153 contained non-ASCII characters. 1154 </action> 1155 <action issue="COMPRESS-182" type="update" date="2012-03-02"> 1156 The tar package can now write archives that use star/GNU/BSD 1157 extensions or use the POSIX/PAX variant to store numeric 1158 values that don't fit into the traditional header fields. 1159 </action> 1160 <action issue="COMPRESS-181" type="update" date="2012-03-02"> 1161 Added a workaround for a Bug some tar implementations that add 1162 a NUL byte as first byte in numeric header fields. 1163 </action> 1164 <action issue="COMPRESS-176" type="update" date="2012-02-28"> 1165 Added a workaround for a Bug in WinZIP which uses backslashes 1166 as path separators in Unicode Extra Fields. 1167 </action> 1168 <action issue="COMPRESS-131" type="update" date="2012-02-23"> 1169 ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed. 1170 </action> 1171 <action issue="COMPRESS-178" type="fix" date="2012-02-23"> 1172 TarArchiveInputStream throws IllegalArgumentException instead of IOException 1173 </action> 1174 <action issue="COMPRESS-179" type="fix" date="2012-02-23"> 1175 TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long 1176 </action> 1177 <action issue="COMPRESS-175" type="fix" date="2012-02-22"> 1178 GNU Tar sometimes uses binary encoding for UID and GID 1179 </action> 1180 <action issue="COMPRESS-171" type="fix" date="2012-01-29"> 1181 ArchiveStreamFactory.createArchiveInputStream would claim 1182 short text files were TAR archives. 1183 </action> 1184 <action issue="COMPRESS-156" type="add" date="2011-11-02"> 1185 Support for the XZ format has been added. 1186 </action> 1187 <action issue="COMPRESS-146" type="update" date="2011-11-07"> 1188 BZip2CompressorInputStream now optionally supports reading of 1189 concatenated .bz2 files. 1190 </action> 1191 <action issue="COMPRESS-154" type="update" date="2011-11-09"> 1192 GZipCompressorInputStream now optionally supports reading of 1193 concatenated .gz files. 1194 </action> 1195 <action issue="COMPRESS-164" type="fix" date="2011-12-05"> 1196 ZipFile didn't work properly for archives using unicode extra 1197 fields rather than UTF-8 filenames and the EFS-Flag. 1198 </action> 1199 <action issue="COMPRESS-16" type="update" date="2011-12-07"> 1200 The tar package can now read archives that use star/GNU/BSD 1201 extensions for files that are longer than 8 GByte as well as 1202 archives that use the POSIX/PAX variant. 1203 </action> 1204 <action issue="COMPRESS-165" type="update" date="2011-12-08"> 1205 The tar package can now write archives that use star/GNU/BSD 1206 extensions for files that are longer than 8 GByte as well as 1207 archives that use the POSIX/PAX variant. 1208 </action> 1209 <action issue="COMPRESS-166" type="update" date="2011-12-08"> 1210 The tar package can now use the POSIX/PAX variant for writing 1211 entries with names longer than 100 characters. 1212 </action> 1213 <action issue="COMPRESS-169" type="fix" date="2011-12-22"> 1214 For corrupt archives ZipFile would throw a RuntimeException in 1215 some cases and an IOException in others. It will now 1216 consistently throw an IOException. 1217 </action> 1218 </release> 1219 <release version="1.3" date="2011-11-01" 1220 description="Release 1.3 - API compatible to 1.2 but requires Java5 at runtime"> 1221 <action issue="COMPRESS-142" type="add" date="2011-09-14"> 1222 Support for the Pack200 format has been added. 1223 </action> 1224 <action issue="COMPRESS-132" type="add" date="2011-08-17"> 1225 Read-only support for the format used by the Unix dump(8) tool 1226 has been added. 1227 </action> 1228 <action issue="COMPRESS-36" type="update" date="2011-08-15"> 1229 The ZIP package now supports Zip64 extensions. 1230 </action> 1231 <action issue="COMPRESS-144" type="update" date="2011-08-08"> 1232 The AR package now supports the BSD dialect of storing file 1233 names longer than 16 chars (both reading and writing). 1234 </action> 1235 <action type="fix" date="2011-08-08"> 1236 BZip2CompressorInputStream's getBytesRead method always 1237 returned 0. 1238 </action> 1239 <action issue="COMPRESS-152" type="fix" date="2011-08-03"> 1240 ZipArchiveInputStream and ZipArchiveOutputStream could leak 1241 resources on some JDKs. 1242 </action> 1243 <action issue="COMPRESS-160" type="fix" date="2011-10-23"> 1244 TarArchiveOutputStream's getBytesWritten method didn't count 1245 correctly. 1246 </action> 1247 </release> 1248 <release version="1.2" date="2011-07-31" 1249 description="Release 1.2 - a bugfix release, the last release expected to be compatible with Java 1.4"> 1250 <action issue="COMPRESS-129" type="fix" date="2011-07-26"> 1251 ZipArchiveInputStream could fail with a "Truncated ZIP" error 1252 message for entries between 2 GByte and 4 GByte in size. 1253 </action> 1254 <action issue="COMPRESS-145" type="fix" date="2011-07-23" 1255 due-tue="Patrick Dreyer"> 1256 TarArchiveInputStream now detects sparse entries using the 1257 oldgnu format and properly reports it cannot extract their 1258 contents. 1259 </action> 1260 <action issue="COMPRESS-123" type="add" date="2011-07-23"> 1261 ZipArchiveEntry has a new method getRawName that provides the 1262 original bytes that made up the name. This may allow user 1263 code to detect the encoding. 1264 </action> 1265 <action issue="COMPRESS-130" type="fix" date="2011-07-20"> 1266 The Javadoc for ZipArchiveInputStream#skip now matches the 1267 implementation, the code has been made more defensive. 1268 </action> 1269 <action issue="COMPRESS-140" type="fix" date="2011-07-20" 1270 due-to="Trejkaz"> 1271 ArArchiveInputStream fails if entries contain only blanks for 1272 userId or groupId. 1273 </action> 1274 <action issue="COMPRESS-139" type="fix" date="2011-07-13"> 1275 ZipFile may leak resources on some JDKs. 1276 </action> 1277 <action type="update" date="2011-04-18"> 1278 ZipFile now implements finalize which closes the underlying 1279 file. 1280 </action> 1281 <action issue="COMPRESS-117" type="update" date="2011-03-23"> 1282 Certain tar files not recognised by ArchiveStreamFactory. 1283 </action> 1284 <action issue="COMPRESS-125" type="fix" date="2011-03-23"> 1285 BZip2CompressorInputStream throws IOException if underlying stream returns available() == 0. 1286 Removed the check. 1287 </action> 1288 <action issue="COMPRESS-127" type="fix" date="2011-03-23"> 1289 Calling close() on inputStream returned by CompressorStreamFactory.createCompressorInputStream() 1290 does not close the underlying input stream. 1291 </action> 1292 <action issue="COMPRESS-122" type="add" date="2010-10-29"> 1293 TarArchiveEntry provides access to the flags that determine 1294 whether it is an archived symbolic link, pipe or other 1295 "uncommon" file system object. 1296 </action> 1297 <action issue="COMPRESS-119" type="fix" date="2010-10-26"> 1298 TarArchiveOutputStream#finish now writes all buffered data to the stream 1299 </action> 1300 </release> 1301 <release version="1.1" date="2010-08-13" description="Release 1.1"> 1302 <action issue="COMPRESS-72" type="fix" date="2010-06-02"> 1303 Move acknowledgements from NOTICE to README 1304 </action> 1305 <action issue="COMPRESS-113" type="fix" date="2010-06-02"> 1306 TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size 1307 </action> 1308 <action issue="COMPRESS-108" type="add" date="2010-05-23"> 1309 Command-line interface to list archive contents. 1310 Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc] 1311 </action> 1312 <action issue="COMPRESS-118" type="fix" date="2010-05-17"> 1313 TarUtils.parseName does not properly handle characters outside the range 0-127 1314 </action> 1315 <action issue="COMPRESS-112" type="update" date="2010-05-13"> 1316 ArArchiveInputStream does not handle GNU extended filename records (//) 1317 </action> 1318 <action issue="COMPRESS-109" type="add" date="2010-05-10"> 1319 Tar implementation does not support Pax headers 1320 Added support for reading pax headers. 1321 Note: does not support global pax headers 1322 </action> 1323 <action issue="COMPRESS-107" type="fix" date="2010-05-10"> 1324 ArchiveStreamFactory does not recognise tar files created by Ant 1325 </action> 1326 <action issue="COMPRESS-110" type="fix" date="2010-05-09"> 1327 Support "ustar" prefix field, which is used when file paths are longer 1328 than 100 characters. 1329 </action> 1330 <action type="update" date="2010-04-19" issue="COMPRESS-105"> 1331 Document that the name of an ZipArchiveEntry determines whether 1332 an entry is considered a directory or not. 1333 If you don't use the constructor with the File argument the entry's 1334 name must end in a "/" in order for the entry to be known as a directory. 1335 </action> 1336 <action type="add" date="2010-03-19" issue="COMPRESS-103"> 1337 ZipArchiveInputStream can optionally extract data that used 1338 the STORED compression method and a data descriptor. 1339 Doing so in a stream is not safe in general, so you have to 1340 explicitly enable the feature. By default the stream will 1341 throw an exception if it encounters such an entry. 1342 </action> 1343 <action type="fix" date="2010-03-12" issue="COMPRESS-100"> 1344 ZipArchiveInputStream will throw an exception if it detects an 1345 entry that uses a data descriptor for a STORED entry since it 1346 cannot reliably find the end of data for this "compression" 1347 method. 1348 </action> 1349 <action type="fix" date="2010-03-12" issue="COMPRESS-101"> 1350 ZipArchiveInputStream should now properly read archives that 1351 use data descriptors but without the "unofficial" signature. 1352 </action> 1353 <action type="add" date="2010-03-09" issue="COMPRESS-98"> 1354 The ZIP classes will throw specialized exceptions if any 1355 attempt is made to read or write data that uses zip features 1356 not supported (yet). 1357 </action> 1358 <action type="add" date="2010-03-08" issue="COMPRESS-99"> 1359 ZipFile#getEntries returns entries in a predictable order - 1360 the order they appear inside the central directory. 1361 A new method getEntriesInPhysicalOrder returns entries in 1362 order of the entry data, i.e. the order ZipArchiveInputStream 1363 would see. 1364 </action> 1365 <action type="add" date="2010-02-19"> 1366 The Archive*Stream and ZipFile classes now have 1367 can(Read|Write)EntryData methods that can be used to check 1368 whether a given entry's data can be read/written. 1369 The method currently returns false for ZIP archives if an 1370 entry uses an unsupported compression method or encryption. 1371 </action> 1372 <action type="add" date="2010-02-19" issue="COMPRESS-89"> 1373 The ZIP classes now detect encrypted entries. 1374 </action> 1375 <action type="update" date="2010-02-18" issue="COMPRESS-79"> 1376 Move DOS/Java time conversions into Zip utility class. 1377 </action> 1378 <action type="fix" date="2010-02-18" issue="COMPRESS-74"> 1379 ZipArchiveInputStream failed to update the number of bytes 1380 read properly. 1381 </action> 1382 <action type="fix" date="2010-02-18"> 1383 ArchiveInputStream has a new method getBytesRead that should 1384 be preferred over getCount since the later may truncate the 1385 number of bytes read for big archives. 1386 </action> 1387 <action type="fix" date="2010-02-18" issue="COMPRESS-85"> 1388 The cpio archives created by CpioArchiveOutputStream couldn't 1389 be read by many existing native implementations because the 1390 archives contained multiple entries with the same inode/device 1391 combinations and weren't padded to a blocksize of 512 bytes. 1392 </action> 1393 <action type="fix" date="2010-02-16" issue="COMPRESS-73"> 1394 ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now 1395 more lenient when parsing extra fields. 1396 </action> 1397 <action issue="COMPRESS-75" type="update" date="2010-02-12"> 1398 ZipArchiveInputStream does not show location in file where a problem occurred. 1399 </action> 1400 <action type="fix" date="2010-02-12" issue="COMPRESS-82"> 1401 cpio is terribly slow. 1402 Documented that buffered streams are needed for performance 1403 </action> 1404 <action type="add" date="2010-02-12" issue="COMPRESS-97"> 1405 Added autodetection of compression format to 1406 CompressorStreamFactory. 1407 </action> 1408 <action type="fix" date="2010-02-12"> 1409 Improved exception message if the extra field data in ZIP 1410 archives cannot be parsed. 1411 </action> 1412 <action type="fix" date="2010-02-11" issue="COMPRESS-17"> 1413 Tar format unspecified - current support documented. 1414 </action> 1415 <action type="add" issue="COMPRESS-95" date="2010-01-29" 1416 due-to="Joerg Bellmann"> 1417 Improve ExceptionMessages in ArchiveStreamFactory 1418 </action> 1419 <action type="fix" issue="COMPRESS-94" date="2010-01-07" 1420 due-to="Anon Devs"> 1421 ZipArchiveEntry's equals method was broken for entries created 1422 with the String-arg constructor. This lead to broken ZIP 1423 archives if two different entries had the same hash code. 1424 </action> 1425 <action type="fix" issue="COMPRESS-87" date="2009-10-30" 1426 due-to="Antoni Mylka"> 1427 ZipArchiveInputStream could repeatedly return 0 on read() when 1428 the archive was truncated. 1429 </action> 1430 <action type="fix" issue="COMPRESS-86" date="2009-10-08"> 1431 Tar archive entries holding the file name for names longer 1432 than 100 characters in GNU longfile mode didn't properly 1433 specify they'd be using the "oldgnu" extension. 1434 </action> 1435 <action type="add" date="2009-08-25"> 1436 A new constructor of TarArchiveEntry can create entries with 1437 names that start with slashes - the default is to strip 1438 leading slashes in order to create relative path names. 1439 </action> 1440 <action issue="COMPRESS-83" type="fix" date="2009-08-01"> 1441 Delegate all read and write methods in GZip stream in order to 1442 speed up operations. 1443 </action> 1444 <action type="add" date="2009-08-01"> 1445 ArchiveEntry now has a getLastModifiedDate method. 1446 </action> 1447 <action type="fix" date="2009-08-01"> 1448 The ar and cpio streams now properly read and write last 1449 modified times. 1450 </action> 1451 <action issue="COMPRESS-81" type="fix" date="2009-06-30"> 1452 TarOutputStream can leave garbage at the end of the archive 1453 </action> 1454 <action issue="COMPRESS-78" type="add" date="2009-06-30" 1455 due-to="Jukka Zitting"> 1456 Add a BZip2Utils class modelled after GZipUtils 1457 </action> 1458 </release> 1459 <release version="1.0" date="2009-05-21" description="First Public Release"> 1460 <action dev="all" type="add" date="2009-05-21"> 1461 Initial release 1462 </action> 1463 <action dev="sgoeschl" type="fix"> 1464 Updating the pom.xml for preparing a move to commons-proper 1465 </action> 1466 </release> 1467 </body> 1468</document> 1469