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

TarUtils.parseName does not follow the spec

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 1.4, 1.14
    • 1.15
    • Archivers
    • None

    Description

      TarUtils.parseName does not stop at the first NUL byte, resulting in non-empty strings where they should be empty.

      This manifests if the tar file contains a star_header struct instead of a posix_header as defined in https://www.gnu.org/software/tar/manual/html_node/Standard.html

      The javadoc on parseName states "Parse an entry name from a buffer. Parsing stops when a NUL is found or the buffer length is reached."

      However, the implementation starts at the end of the buffer and stops when the first non-NUL is found.

      The solution is to replace:

        int len = length;
        for (; len > 0; len--) {
          if (buffer[offset + len - 1] != 0) {
            break;
          }
        }
      

      by

        int len = 0;
        for (int i = offset; len < length && buffer[i] != 0; i++, len++);
      

      This has been introduce in commit https://git-wip-us.apache.org/repos/asf?p=commons-compress.git;a=commitdiff;h=69ceb4e14feb6273c06c1e35ba116b6783bb3278

      Attachments

        1. foo.tar.gz
          110 kB
          Roel Spilker

        Activity

          People

            Unassigned Unassigned
            r.spilker Roel Spilker
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: