I've put together a better patch for this issue. Here's the commit message from the patch file:
We now explicitly document that the length and error parameters are unused in the avro_schema_from_json function. (The error parameter isn't needed, since any errors parsing or interpreting the JSON text are available using the avro_strerror() function.)
This patch also adds the new avro_schema_from_json_length function. This function actually uses its length parameter, and we explicitly document that the length should not include any NUL terminator, if one is present. We also provide the avro_schema_from_json_literal helper macro, which automatically calculates the size of a literal JSON string at compile time. (To work, the JSON string must be defined as a char, not a char *.)
We decided to fix this bug using a new function because there's existing code out there that's already assuming that avro_schema_from_json's len parameter is unused. (Or at least, they're assuming different things about what kind of value to pass in.) This solution ensures that existing code still works, while providing a new function for the (needed) non-NUL-terminated case. It comes at the expense of a sloppy signature for the existing avro_schema_from_json function...but then, the signature was already sloppy. We're at least not adding any new sloppiness.
We also now use the new avro_schema_from_json_length function when reading an Avro object container file. This means that we no longer need to append a NUL terminator to the schema JSON when reading in the container file's header. (We don't need to, but we still do. One change at a time.)