X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gdbserver%2Fgdb-remote.c;fp=gdbserver%2Fgdb-remote.c;h=2f61b93acf5df4172e47bf2ba25a61b52198f908;hb=f782e931b0c51836ffae8a47618e6c2263607555;hp=a9eef3333d04eb05d7f73274618fec2ff015a8cb;hpb=5121ae07c4a58887dcf940c107a4f45422ffd092;p=fw%2Fstlink diff --git a/gdbserver/gdb-remote.c b/gdbserver/gdb-remote.c index a9eef33..2f61b93 100644 --- a/gdbserver/gdb-remote.c +++ b/gdbserver/gdb-remote.c @@ -18,7 +18,8 @@ static const char hex[] = "0123456789abcdef"; int gdb_send_packet(int fd, char* data) { - int length = strlen(data) + 5; + unsigned int data_length = strlen(data); + int length = data_length + 4; char* packet = malloc(length); /* '$' data (hex) '#' cksum (hex) */ memset(packet, 0, length); @@ -26,14 +27,14 @@ int gdb_send_packet(int fd, char* data) { packet[0] = '$'; uint8_t cksum = 0; - for(unsigned int i = 0; i < strlen(data); i++) { + for(unsigned int i = 0; i < data_length; i++) { packet[i + 1] = data[i]; cksum += data[i]; } - packet[length - 4] = '#'; - packet[length - 3] = hex[cksum >> 4]; - packet[length - 2] = hex[cksum & 0xf]; + packet[length - 3] = '#'; + packet[length - 2] = hex[cksum >> 4]; + packet[length - 1] = hex[cksum & 0xf]; while(1) { if(write(fd, packet, length) != length) {