prestodb/presto · error · IllegalArgumentException

invalid extra field length

Error message

invalid extra field length

What it means

Guard in setExtra: the serialized extra-field data for a ZIP entry exceeds the 16-bit maximum (0xffff) that the extra field length can express. The ZIP format simply cannot store a larger extra block, so both entry construction and reading reject it.

Source

Thrown at presto-druid/src/main/java/com/facebook/presto/druid/zip/ZipFileEntry.java:346

        if (localHeaderOffset > 0xffffffffL) {
            featureSet.add(Feature.ZIP64_OFFSET);
        }
        else {
            featureSet.remove(Feature.ZIP64_OFFSET);
        }
        this.localHeaderOffset = localHeaderOffset;
    }

    public long getLocalHeaderOffset()
    {
        return localHeaderOffset;
    }

    public void setExtra(ExtraDataList extra)
    {
        checkArgument(extra != null, "Zip file data could not be null");
        if (extra.getLength() > 0xffff) {
            throw new IllegalArgumentException("invalid extra field length");
        }
        this.extra = extra;
    }

    public ExtraDataList getExtra()
    {
        return extra;
    }

    public void setComment(@Nullable String comment)
    {
        this.comment = comment;
    }

    public String getComment()
    {
        return comment;
    }

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Trim extra fields to fit within 65535 bytes
  2. Move large metadata out of the ZIP extra field
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at presto-druid/src/main/java/com/facebook/presto/druid/zip/ZipFileEntry.java:346 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/8dc51f0cee30e839. Report an issue: GitHub.