Uploaded image for project: 'Commons Compress'
  1. Commons Compress
  2. COMPRESS-529

Tar decompression fails with runtime exceptions

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.20
    • 1.21
    • None
    • None

    Description

      This Kotlin code fails with exception(NumberFormatException.tar is in the attachment)

      Exception in thread "main" java.lang.NumberFormatException: For input string: "143266�921.098285006"
      at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
      at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
      at java.base/java.lang.Double.parseDouble(Double.java:543)
      at org.apache.commons.compress.archivers.tar.TarArchiveEntry.processPaxHeader(TarArchiveEntry.java:1161)
      at org.apache.commons.compress.archivers.tar.TarArchiveEntry.updateEntryFromPaxHeaders(TarArchiveEntry.java:1093)
      at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.applyPaxHeadersToCurrentEntry(TarArchiveInputStream.java:757)
      at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.paxHeaders(TarArchiveInputStream.java:562)
      at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextTarEntry(TarArchiveInputStream.java:404)
      at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.getNextEntry(TarArchiveInputStream.java:799)
      at ru.example.kotlinfuzzer.tests.MainKt.main(main.kt:69)
      at ru.example.kotlinfuzzer.tests.MainKt.main(main.kt)

      import org.apache.commons.compress.archivers.ArchiveStreamFactory
      import java.io.File
      
      fun main() {
          val tar = File("NumberFormatException.tar")
          ArchiveStreamFactory().createArchiveInputStream("tar", tar.inputStream()).use { ais ->
              ais.nextEntry
              ais.readAllBytes()
          }
      }
      

      This Kotlin code fails with exception(LongName.tar is in the attachment)

      Exception in thread "main" java.lang.RuntimeException: file name 'asidhuasih a
      sdjn osdn
      sdvs ndv
      asdjbhasdb asb iasbfi basdigf basduio
      asdkhasjdhasd
      asdjkhasnjddjasjdas
      /?' is too long ( > 100 bytes)
      at org.apache.commons.compress.archivers.tar.TarArchiveOutputStream.handleLongName(TarArchiveOutputStream.java:683)
      at org.apache.commons.compress.archivers.tar.TarArchiveOutputStream.putArchiveEntry(TarArchiveOutputStream.java:358)
      at ru.example.kotlinfuzzer.tests.MainKt.test(main.kt:20)
      at ru.example.kotlinfuzzer.tests.MainKt.main(main.kt:8)
      at ru.example.kotlinfuzzer.tests.MainKt.main(main.kt)

      import org.apache.commons.compress.archivers.ArchiveStreamFactory
      import org.apache.commons.compress.archivers.tar.TarArchiveEntry
      import java.io.File
      
      fun main() {
          test(File("LongName.tar"))
      }
      
      fun test(tar: File) {
          val (decompressed, name) = ArchiveStreamFactory().createArchiveInputStream("tar", tar.inputStream()).use { ais ->
              val entry = ais.nextEntry
              ais.readAllBytes() to entry.name
          }
          File.createTempFile("apache_", ".tar").also {
              ArchiveStreamFactory().createArchiveOutputStream("tar", it.outputStream()).use { aos ->
                  val entry = TarArchiveEntry(name)
                  entry.size = decompressed.size.toLong()
                  aos.putArchiveEntry(entry)
                  try {
                      aos.write(decompressed)
                  } finally {
                      aos.closeArchiveEntry()
                  }
              }
          }
      }
      

       

      IOException expected

      Attachments

        1. japicmp.html
          95 kB
          Peter Lee
        2. japicmp.html
          95 kB
          Peter Lee
        3. LongName.tar
          0.5 kB
          Maksim Zuev
        4. NumberFormatException.tar
          2 kB
          Maksim Zuev

        Activity

          People

            Unassigned Unassigned
            zuevmaxim Maksim Zuev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: