From 355f4cadbbf10c75cf05fb1a82bf918b3ab65c55 Mon Sep 17 00:00:00 2001 From: Paul Fertser Date: Sat, 17 Jan 2015 15:15:11 +0300 Subject: Use (uint8_t *) for buf_(set|get)_u(32|64) instead of (void *) This helps to uncover incorrect usage when a pointer to uint32_t is passed to those functions which leads to subtle bugs on BE systems. The reason is that it's normally assumed that any uint32_t variable holds its value in host byte order, but using but_set_u32 on it silently does implicit pointer conversion to (void *) and the assumption ends up broken without any indication. Change-Id: I48ffd190583d8aa32ec1fef8f1cdc0b4184e4546 Signed-off-by: Paul Fertser Reviewed-on: http://openocd.zylin.com/2467 Tested-by: jenkins Reviewed-by: Andreas Fritiofson --- src/target/smp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/target/smp.c') diff --git a/src/target/smp.c b/src/target/smp.c index e688304a..da9ee8b4 100644 --- a/src/target/smp.c +++ b/src/target/smp.c @@ -64,9 +64,9 @@ int gdb_read_smp_packet(struct connection *connection, if (strncmp(packet, "jc", 2) == 0) { const uint32_t len = sizeof(target->gdb_service->core[0]); char hex_buffer[len * 2 + 1]; - char buffer[len]; + uint8_t buffer[len]; buf_set_u32(buffer, 0, len * 8, target->gdb_service->core[0]); - int pkt_len = hexify(hex_buffer, buffer, sizeof(buffer), sizeof(hex_buffer)); + int pkt_len = hexify(hex_buffer, (char *)buffer, sizeof(buffer), sizeof(hex_buffer)); retval = gdb_put_packet(connection, hex_buffer, pkt_len); } -- cgit v1.2.3-18-g5258