gdb server: Fix bug. Parse 'M' packet error.60/1360/2
authorHsiangkai Wang <hsiangkai@gmail.com>
Tue, 23 Apr 2013 10:42:07 +0000 (23 18:42 +0800)
committerFreddie Chopin <freddie.chopin@gmail.com>
Sun, 28 Apr 2013 07:34:34 +0000 (28 07:34 +0000)
The format of 'M' packet is 'M addr,length:XX...'. The data
follows ':' immediately. No need to '+2' to SEPARATOR in
unhexify(), because SEPARATOR points to data correctly.

Change-Id: I15b5758b540816cc727752e7bf68cd45e623f603
Signed-off-by: Hsiangkai Wang <hsiangkai@gmail.com>
Reviewed-on: http://openocd.zylin.com/1360
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
src/server/gdb_server.c

index cb96bf2..e7f5428 100644 (file)
@@ -1259,7 +1259,7 @@ static int gdb_write_memory_packet(struct connection *connection,
 
        LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);
 
-       if (unhexify((char *)buffer, separator + 2, len) != (int)len)
+       if (unhexify((char *)buffer, separator, len) != (int)len)
                LOG_ERROR("unable to decode memory packet");
 
        retval = target_write_buffer(target, addr, len, buffer);