Mesa (master): gallivm: abort properly when running out of buffer space in lp_disassembly

Roland Scheidegger sroland at kemper.freedesktop.org
Mon Mar 16 23:47:30 UTC 2015


Module: Mesa
Branch: master
Commit: 2372275d2fc9e4d3785b34a5aeb7b6126e8cc402
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2372275d2fc9e4d3785b34a5aeb7b6126e8cc402

Author: Roland Scheidegger <sroland at vmware.com>
Date:   Fri Mar 13 23:45:20 2015 +0100

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 <brianp at vmware.com>
Reviewed-by: Jose Fonseca <jfonseca at vmware.com>

---

 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;
 }
 




More information about the mesa-commit mailing list