Download Latest Version release-1.12.2 source code.zip (6.0 MB)
Email in envelope

Get an email when there's a new version of Apache Avro

Home / release-1.12.2
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-08-12 8.8 kB
release-1.12.2 source code.tar.gz 2026-08-12 4.2 MB
release-1.12.2 source code.zip 2026-08-12 6.0 MB
Totals: 3 Items   10.2 MB 0

The Apache Avro community is pleased to announce the release of Avro 1.12.2!

All signed release artifacts, signatures and verification instructions can be found here

Security Fixes

This release includes a broad round of hardening against malformed and adversarial input across the Java and Python SDKs (bounding allocations and enforcing decompression limits before trusting size fields read from the input), plus a handful of other fixes with security impact in C#, C++ and JavaScript:

C

  • AVRO-4196: Package 'Microsoft.Build.Utilities.Core' 17.8.3 has a known high severity vulnerability
  • AVRO-4314: Validate names against the Avro name grammar at parse time

C++

  • AVRO-4228: BinaryDecoder::arrayNext() does not handle negative block counts

Java

  • AVRO-4241: BinaryDecoder should verify available bytes before reading
  • AVRO-4247: Avro compression codecs should verify decompression size
  • AVRO-4254: Avoid logging datum values in UnresolvedUnionException
  • AVRO-4300: Bound array/map allocation and skipping when decoding on both the classic and fast readers
  • AVRO-4313: javaAnnotation values can inject arbitrary Java code into generated sources
  • AVRO-4323: Bound DataFileStream block size against available input before allocating the block buffer
  • AVRO-4324: Align ReflectDatumReader.readArray with GenericDatumReader eager-allocation guards for malformed input
  • AVRO-4325: Validate column-file header counts and lengths before allocating in the Trevni readers

JavaScript

  • AVRO-4252: Update JS dependencies with security issues

Python

  • AVRO-4290: Enforce a maximum decompressed block size
  • AVRO-4296: Bound allocation when decoding length-prefixed values and collections

Breaking Changes

Java

The Avro 1.12.2 Java SDK now restricts arbitrary Java classes from being instantiated, either from the SpecificDatumReader or java-class attributes in a schema. If you are not setting the org.apache.avro.SERIALIZABLE_CLASSES or org.apache.avro.SERIALIZABLE_PACKAGES system properties, you may experience the following java.lang.SecurityException:

java.lang.SecurityException: Forbidden com.example.MyCustomClass!
  This class is not trusted to be included in Avro schemas.
    at org.apache.avro.util.ClassSecurityValidator.validate(ClassSecurityValidator.java:60)
    at org.apache.avro.util.ClassUtils.forName(ClassUtils.java:99)
    ...

See AVRO-4189 for more details.

The recommended action is to list the classes and packages that Avro is allowed to instantiate in the org.apache.avro.SERIALIZABLE_CLASSES or org.apache.avro.SERIALIZABLE_PACKAGES system properties. If you are running Avro in an environment with trusted schemas and trusted data, you can restore the old behaviour by setting org.apache.avro.SERIALIZABLE_PACKAGES to * (or calling ClassSecurityValidator.setGlobal(...) to trust your own classes).

Highlights

C

  • AVRO-4246: Memory leak in avroc on failed decoding
  • AVRO-4270: Fix wrong schema accessor in avro_generic_map_class

C

  • AVRO-2825: C# Logical Types throw exception on unknown logical type
  • AVRO-4162: C# AvroDecimal.CompareTo claims 1.55 > 2.5

C++

  • AVRO-4206: Missing zstd in installed cmake
  • AVRO-4221: Allow using symbol visibility annotations on non-Windows platforms
  • AVRO-4248: ASAN misaligned address in BufferDetail.hh
  • Reject lone low surrogate U+DFFF in the JSON decoder (#3841)

Java

  • AVRO-2032: Unable to decode JSON-encoded Double.NaN, Double.POSITIVE_INFINITY or Double.NEGATIVE_INFINITY
  • AVRO-4176: Java parser allows field type to be object with custom type
  • AVRO-4182: NoSuchElementException in IdlReader for duplicated Enum definition
  • AVRO-4183: 'result' variable in generated hashCode method shadows field 'result'
  • AVRO-4189: Simplify the setting of the serializable classes
  • AVRO-4197: Schema bytes defaults are broken
  • AVRO-4202: Avro tools hashCode method conflict with schema field result
  • AVRO-4209: ReflectData.getSchema fails for a POJO class that contains a field of the same type
  • AVRO-4210: BinaryData.compareBytes should treat bytes as unsigned
  • AVRO-4211: IDLUtils cannot generate schema for union fields with a default value that is not the first element
  • AVRO-4225: GenericDatumReader throws ClassCastException for schemas with "java-class" attribute on string fields
  • AVRO-4238: FastReader fails to unbox nested type when defaulting a union<array<>> field
  • AVRO-4242: Malformed Avro container without schema metadata should fail graciously
  • AVRO-4257: Use the new SchemaParser introduced with Avro 1.12
  • AVRO-4268: BytesWritableConverter serializes unused capacity bytes
  • AVRO-4269: TimestampNanosConversion.toLong(...) encodes pre-epoch instants with the wrong nanosecond offset
  • AVRO-4321: NPE on getConversionByClass
  • AVRO-4322: Fast and classic readers change GenericData behaviour

Perl

  • AVRO-4239: Perl porting lacks a version number

Python

  • AVRO-3760: Using enum with default symbol, cannot parse future value
  • Fixed byte compare in ipc.py (#3710)

Other changes

These SDKs also picked up dependency and build-tooling updates with no other user-facing change: C#, C++, Java, JavaScript, Python.

Language SDK / Convenience artifacts

Thanks to everyone for contributing!

Source: README.md, updated 2026-08-12