diff options
author | Roland Scheidegger <[email protected]> | 2015-03-13 23:45:20 +0100 |
---|---|---|
committer | Roland Scheidegger <[email protected]> | 2015-03-17 00:46:48 +0100 |
commit | 2372275d2fc9e4d3785b34a5aeb7b6126e8cc402 (patch) | |
tree | 2b6b957f5e31644074e664fe70a5cc8012bb33f0 | |
parent | 9d1682d619426d0a5b90a12df82390cdfa098107 (diff) |
gallivm: abort properly when running out of buffer space in lp_disassembly
Before this actually ran into an infinite loop printing out "invalid"...
Reviewed-by: Brian Paul <[email protected]>
Reviewed-by: Jose Fonseca <[email protected]>
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_debug.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp index 402d29e9681..2c4ed21edd4 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp +++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp @@ -399,19 +399,23 @@ disassemble(const void* func, llvm::raw_ostream & Out) break; } } + + if (pc >= extent) { + Out << "disassembly larger than " << extent << "bytes, aborting\n"; + break; + } } + Out << "\n"; + Out.flush(); + /* * Print GDB command, useful to verify output. */ - if (0) { _debug_printf("disassemble %p %p\n", bytes, bytes + pc); } - Out << "\n"; - Out.flush(); - return pc; } |