+2022-01-06 Nick Clifton <nickc@redhat.com>
+
+ PR 28718
+ * debug.c (debug_write_type): Allow for malicious recursion via
+ indirect debug types.
+
2022-01-04 Nick Clifton <nickc@redhat.com>
PR 28716
debug_error (_("debug_write_type: illegal type encountered"));
return false;
case DEBUG_KIND_INDIRECT:
- return debug_write_type (info, fns, fhandle, *type->u.kindirect->slot,
- name);
+ /* PR 28718: Allow for malicious recursion. */
+ {
+ static int recursion_depth = 0;
+ bool result;
+
+ if (recursion_depth > 256)
+ {
+ debug_error (_("debug_write_type: too many levels of nested indirection"));
+ return false;
+ }
+ ++ recursion_depth;
+ result = debug_write_type (info, fns, fhandle, *type->u.kindirect->slot,
+ name);
+ -- recursion_depth;
+ return result;
+ }
case DEBUG_KIND_VOID:
return (*fns->void_type) (fhandle);
case DEBUG_KIND_INT: