Description
I ran into a bug with schema validation code that throws unexpected NullPointerException when validating a schema with enum type. The bug is present in latest version of Avro Java API.
Schema to replicate issue:
{ "type": "enum", "name": "Suit", "symbols" : [null] }Replication Steps:
- Validate the above schema using Java API.
- I used avro-cli for testing but was also able to replicate with API.
- java -jar avro-cli-0.2.7.jar normalize -s ~/tmp/schema.txt
Exception:
java.lang.NullPointerException: nullat org.apache.avro.Schema.validateName(Schema.java:1557) ~[avro-1.10.2.jar:1.10.2]
at org.apache.avro.Schema.access$400(Schema.java:91) ~[avro-1.10.2.jar:1.10.2]
at org.apache.avro.Schema$EnumSchema.<init>(Schema.java:1035) ~[avro-1.10.2.jar:1.10.2]
at org.apache.avro.Schema.parse(Schema.java:1709) ~[avro-1.10.2.jar:1.10.2]
at org.apache.avro.Schema.parse(Schema.java:1673) ~[avro-1.10.2.jar:1.10.2]
at org.apache.avro.Schema$Parser.parse(Schema.java:1430) ~[avro-1.10.2.jar:1.10.2]
at org.apache.avro.Schema$Parser.parse(Schema.java:1418) ~[avro-1.10.2.jar:1.10.2]
As seen in the code, there is no null check on symbol which is causing this.