From 55bde23071c0bf78b6e5c5a1a5adc0d41dabe4e7 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Mon, 28 Aug 2006 09:58:03 -0700 Subject: Fix remote gdb buffer overflow. --HG-- extra : convert_revision : e5e5206bdd48120cebcb1e339b1dab2e10f4b6cf --- src/base/remote_gdb.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/base') diff --git a/src/base/remote_gdb.cc b/src/base/remote_gdb.cc index 0d3b73b1e..e4efa31e3 100644 --- a/src/base/remote_gdb.cc +++ b/src/base/remote_gdb.cc @@ -796,7 +796,6 @@ RemoteGDB::trap(int type) size_t datalen, len; char data[KGDB_BUFLEN + 1]; char buffer[sizeof(gdbregs) * 2 + 256]; - char temp[KGDB_BUFLEN]; const char *p; char command, subcmd; string var; @@ -904,10 +903,14 @@ RemoteGDB::trap(int type) } if (read(val, (size_t)len, (char *)buffer)) { - mem2hex(temp, buffer, len); - send(temp); + // variable length array would be nice, but C++ doesn't + // officially support those... + char *temp = new char[2*len+1]; + mem2hex(temp, buffer, len); + send(temp); + delete [] temp; } else { - send("E05"); + send("E05"); } continue; -- cgit v1.2.3