damansingh1313 opened a new pull request, #17852:
URL: https://github.com/apache/iceberg/pull/17852

   GenericAvroReader.recordReader used an Avro schema's record name directly as 
a Java class name, loading and constructing it via reflection with no 
restriction. Two production paths feed this untrusted bytes/schemas: 
ManifestFiles.decode and Kafka Connect's AvroUtil.decode. If a schema named a 
class that happened to already be on the classpath and implement IndexedRecord, 
that class would be constructed regardless of whether it was ever intended to 
be reconstructed this way.
   
   This adds a hardcoded allowlist (ALLOWED_RECORD_CLASSES) inside 
GenericAvroReader and only attempts class resolution for names on that list; 
anything else now falls back to the existing generic record reader. Kafka 
Connect's classes are listed by name rather than Class literal since 
iceberg-core cannot depend on iceberg-kafka-connect-events; a comment 
cross-references that module's FIELD_ID_TO_CLASS to keep the two from drifting 
apart.
   
   This keeps the change self-contained to GenericAvroReader, with no changes 
to AvroEncoderUtil, ManifestFiles, or AvroUtil's method signatures or call 
sites.
   
   Closes #17802


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to