This can be reproduced by taking a valid binding with the pattern:
allOf:
- $ref: /schemas/simple-bus.yaml#
and removing the - so that it is no longer an array
allOf:
$ref: /schemas/simple-bus.yaml#
Here is an example stack trace from a crash:
Traceback (most recent call last):
File "/home/david/.local/bin/dt-mk-schema", line 38, in <module>
schemas = dtschema.DTValidator(args.schemas).schemas
File "/home/david/.local/pipx/venvs/dtschema/lib/python3.10/site-packages/dtschema/validator.py", line 358, in __init__
self.schemas = process_schemas(schema_files)
File "/home/david/.local/pipx/venvs/dtschema/lib/python3.10/site-packages/dtschema/validator.py", line 275, in process_schemas
sch = process_schema(os.path.abspath(filename))
File "/home/david/.local/pipx/venvs/dtschema/lib/python3.10/site-packages/dtschema/validator.py", line 259, in process_schema
schema = dtsch.fixup()
File "/home/david/.local/pipx/venvs/dtschema/lib/python3.10/site-packages/dtschema/schema.py", line 151, in fixup
dtschema.fixups.fixup_schema(processed_schema)
File "/home/david/.local/pipx/venvs/dtschema/lib/python3.10/site-packages/dtschema/fixups.py", line 483, in fixup_schema
fixup_sub_schema(schema)
File "/home/david/.local/pipx/venvs/dtschema/lib/python3.10/site-packages/dtschema/fixups.py", line 368, in fixup_sub_schema
walk_properties(prop, v[prop])
File "/home/david/.local/pipx/venvs/dtschema/lib/python3.10/site-packages/dtschema/fixups.py", line 296, in walk_properties
fixup_vals(propname, schema)
File "/home/david/.local/pipx/venvs/dtschema/lib/python3.10/site-packages/dtschema/fixups.py", line 273, in fixup_vals
_fixup_int_array_min_max_to_matrix(propname, schema)
File "/home/david/.local/pipx/venvs/dtschema/lib/python3.10/site-packages/dtschema/fixups.py", line 112, in _fixup_int_array_min_max_to_matrix
if not is_int_array_schema(propname, subschema):
File "/home/david/.local/pipx/venvs/dtschema/lib/python3.10/site-packages/dtschema/fixups.py", line 98, in is_int_array_schema
return int_array_re.search(item['$ref'])
TypeError: string indices must be integers
In
dtschema.fixups.is_int_array_schema()
it is possible to crash on line 98 ifitem
is a string instead of an array.https://github.com/devicetree-org/dt-schema/blob/5d76ad1e7b668ab5c2a3629b24e278a66d52f8fc/dtschema/fixups.py#L97-L98
This can be reproduced by taking a valid binding with the pattern:
and removing the
-
so that it is no longer an arrayHere is an example stack trace from a crash: