Uploaded image for project: 'Kudu'
  1. Kudu
  2. KUDU-2085

Seek past last element of a prefix-encoded binary block may crash

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 1.0.1, 1.1.0, 1.2.0, 1.3.1, 1.4.0
    • Fix Version/s: 1.3.2, 1.5.0, 1.2.1, 1.4.1
    • Component/s: cfile
    • Labels:
      None

      Description

      Similar to KUDU-2049, the binary prefix block encoder has a bug when seeking past the end of the block (i.e to the offset past the last element). The bug only causes issues in very specific circumstances:

      • the number of elements in the block has to be a multiple of 16 (the "restart interval")
        • this causes the code to interpret the "restart count" at the end of the block data as an offset instead of part of the footer.
      • this value, when interpreted as an offset, points to a piece of data in the block which, when interpreted as a varint, ends up large enough to point past the end of the block.

      This results in an error like:
      F0730 09:56:07.291882 124055 binary_prefix_block.cc:325] Check failed: _s.ok() Bad status: Corruption: Could not decode value length data at idx 32

        Attachments

          Activity

            People

            • Assignee:
              tlipcon Todd Lipcon
              Reporter:
              tlipcon Todd Lipcon
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: