Skip to content

Jackson Release 3.1.8

Tatu Saloranta edited this page Oct 17, 2026 · 49 revisions

Patch version of 3.1, released on October 17, 2026.

Following fixes will be included in this patch release.

Changes, core

  • #1683: JSON\uXXXX escape accepts lone surrogates in field names for ReaderBasedJsonParser
  • #1724: InvocationTargetException cause may produce misleading messages in wrapWithPath()
  • #1728: Error message drops high bits from supplementary code points
  • #1730: Make FilteringGeneratorDelegate handle embedded objects, typed arrays and raw/binary values consistently
  • #1742: Non-blocking parser returns NOT_AVAILABLE with needMoreInput() false when a feed ends inside an escaped surrogate pair in a property name
  • #1744: UTF8DataInputJsonParser fails on JSON-escaped surrogate pairs in property names
  • #1746: Non-blocking parser rejects leading-decimal-point numbers after , or : with ALLOW_LEADING_DECIMAL_POINT_FOR_NUMBERS
  • #1748: Unquoted non-ASCII property names fail in UTF-8 byte parsers with ALLOW_UNQUOTED_FIELD_NAMES
  • #1750: ALLOW_UNESCAPED_CONTROL_CHARS ignored for single-quoted string values in UTF-8 byte parsers
  • #1756: Non-blocking parser does not decode multi-byte UTF-8 character after backslash escape
  • #6206: Report cycle through @JsonValue accessor as DatabindException
  • #6227: BeanDescription.findProperties() is not thread-safe when called concurrently on the same (shared/cached) instance
  • #6232: Validate number length when coercing StringNode to number
  • #6236: withFormat() of Month, MonthDay, Year, YearMonth serializers drops JsonFormat.Shape
  • #6240: @JsonValue ignored on getter also annotated with @JsonKey
  • #6246: Retain case-insensitivity of Creator properties in PropertyBasedCreator.renameAll()
  • #6249: Avoid NPE when parser reports VALUE_STRING with null text
  • #6252: @JsonIgnoreProperties / @JsonIncludeProperties not applied to EnumMap (and Map<Enum,V>) properties
  • #6261: Support @JsonView on properties-based Creator parameters of Enum, Map and EnumMap types
  • #6287: Validate type parameters and array element types of type ids [CVE-2026-110879]

Changes, dataformats

Avro

  • #797: Apache decoder fails with UnsupportedOperationException when AvroParser.Feature.AVRO_BUFFERING disabled
  • #816: Validate union index in UnionReader.nextToken()
  • #819: Avro bytes value allocated to declared length before checking available content [CVE-2026-104015]
  • #845: Avro parsers' getText(Writer) write wrong text for numeric tokens, NPE for binary; ApacheAvroParserImpl.getText() returns stale text for non-String scalars
  • #852: skipMap() / skipArray() on Decoder passed to @AvroEncode CustomEncoding misreads data
  • #855: arrayNext() / mapNext() on Decoder passed to @AvroEncode CustomEncoding lose elements and the following field

CBOR

  • #821: CBORParser.TagList should grow its backing array geometrically [CVE-2026-106554]
  • #842: CBORGenerator writes wrong exponent for BigDecimal with scale Integer.MIN_VALUE
  • #844: CBORParser.getText(Writer) writes stale text for numeric tokens, NPE for binary

Ion

  • #818: Report corrupt Ion content for String/Symbol value without text

Protobuf

  • #817: Improve length validation for length-prefixed values in ProtobufParser [CVE-2026-104016][CVE-2026-104017][CVE-2026-110747]
  • #846: ProtobufParser.getText(Writer) writes stale text for numeric tokens, NPE for binary

Smile

  • #825: Non-blocking Smile parser should validate raw binary length and not pre-allocate full buffer [CVE-2026-104895]
  • #830: Non-blocking Smile parser silently drops truncated root-level value at end-of-input
  • #831: Non-blocking Smile parser reports wrong currentLocation() / currentTokenLocation() byte offsets
  • #833: Non-blocking _decodeShortUnicodeText() reads past declared String length on truncated UTF-8 sequence
  • #834: SmileGenerator silently writes wrong BigDecimal scale outside [-2^30, 2^30-1]
  • #835: SmileParser.getText(Writer) writes stale text for numeric tokens
  • #838: Non-blocking Smile parser requires a header after a root-level scalar value (rejects end marker, following root values)

TOML

  • #726: Fix TomlGenerator.writeString(char[],int,int) index bug when escaping needed
  • #746: Fix remaining TomlGenerator String write issues

Changes, data types

  • #190: Reject out-of-range int in PeriodDeserializer object form
  • #76: Widen jakarta.ws.rs import range for Jakarta EE 11

Clone this wiki locally