projects
/
fw
/
openocd
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gdb: Potential rounding error in reg_packet_size gdb_get_registers_packet
[fw/openocd]
/
src
/
server
/
gdb_server.c
diff --git
a/src/server/gdb_server.c
b/src/server/gdb_server.c
index cbc2b401c37596cd8134ea8b313dd2acf9d1ada9..4dd9bd10aec81edf3b90ccdefd0b102df76fc6f1 100644
(file)
--- a/
src/server/gdb_server.c
+++ b/
src/server/gdb_server.c
@@
-1058,12
+1058,12
@@
static int gdb_get_registers_packet(struct connection *connection,
for (i = 0; i < reg_list_size; i++)
{
for (i = 0; i < reg_list_size; i++)
{
- reg_packet_size +=
reg_list[i]->size
;
+ reg_packet_size +=
DIV_ROUND_UP(reg_list[i]->size, 8) * 2
;
}
assert(reg_packet_size > 0);
}
assert(reg_packet_size > 0);
- reg_packet = malloc(
DIV_ROUND_UP(reg_packet_size, 8) * 2
);
+ reg_packet = malloc(
reg_packet_size
);
reg_packet_p = reg_packet;
for (i = 0; i < reg_list_size; i++)
reg_packet_p = reg_packet;
for (i = 0; i < reg_list_size; i++)
@@
-1077,13
+1077,13
@@
static int gdb_get_registers_packet(struct connection *connection,
#ifdef _DEBUG_GDB_IO_
{
char *reg_packet_p;
#ifdef _DEBUG_GDB_IO_
{
char *reg_packet_p;
- reg_packet_p = strndup(reg_packet,
DIV_ROUND_UP(reg_packet_size, 8) * 2
);
+ reg_packet_p = strndup(reg_packet,
reg_packet_size
);
LOG_DEBUG("reg_packet: %s", reg_packet_p);
free(reg_packet_p);
}
#endif
LOG_DEBUG("reg_packet: %s", reg_packet_p);
free(reg_packet_p);
}
#endif
- gdb_put_packet(connection, reg_packet,
DIV_ROUND_UP(reg_packet_size, 8) * 2
);
+ gdb_put_packet(connection, reg_packet,
reg_packet_size
);
free(reg_packet);
free(reg_list);
free(reg_packet);
free(reg_list);