[Mesa-dev] [PATCH] gallivm: abort properly when running out of buffer space in lp_disassembly

sroland at vmware.com sroland at vmware.com
Fri Mar 13 15:46:50 PDT 2015


From: Roland Scheidegger <sroland at vmware.com>

Before this actually ran into an infinite loop printing out "invalid"...
---
 src/gallium/auxiliary/gallivm/lp_bld_debug.cpp | 12 ++++++++----
 1 file 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 402d29e..2c4ed21 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;
 }
 
-- 
1.9.1



More information about the mesa-dev mailing list