From ebaa961812e7b29eee554025a6253d676cea6ce0 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Fri, 16 Oct 2009 18:32:12 -0700 Subject: Ensure that DWARF keeps loc2c to a reasonable stack depth * dwflpp.cxx (dwflpp::express_as_string): Limit stack depth to 32. --- dwflpp.cxx | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'dwflpp.cxx') diff --git a/dwflpp.cxx b/dwflpp.cxx index b1d9a32b..0c45eb7d 100644 --- a/dwflpp.cxx +++ b/dwflpp.cxx @@ -2182,8 +2182,15 @@ dwflpp::express_as_string (string prelude, fprintf(memstream, "{\n"); fprintf(memstream, "%s", prelude.c_str()); + unsigned int stack_depth; bool deref = c_emit_location (memstream, head, 1, &stack_depth); + + // Ensure that DWARF keeps loc2c to a "reasonable" stack size + // 32 intptr_t leads to max 256 bytes on the stack + if (stack_depth > 32) + throw semantic_error("oversized DWARF stack"); + fprintf(memstream, "%s", postlude.c_str()); fprintf(memstream, " goto out;\n"); -- cgit