[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] gdbstub: implement remote debugging protocol es
From: |
Doug Gale |
Subject: |
Re: [Qemu-devel] [PATCH] gdbstub: implement remote debugging protocol escapes for command receive |
Date: |
Sun, 7 May 2017 11:27:20 -0400 |
[Oops, forgot to reply all, resending...]
Yes, on second thought, <= 2 is off by one. [0] would be the '$', [1]
would be the repeated character, and [2] would be the '*'.
And yes, there is a missing s->state = RS_IDLE there. Good catch. I'll
post updated patch shortly...
On Fri, May 5, 2017 at 10:45 AM, Stefan Hajnoczi <address@hidden> wrote:
> On Tue, May 02, 2017 at 10:32:40AM -0400, Doug Gale wrote:
>> + } else {
>> + /* decode repeat length */
>> + int repeat = (unsigned char)ch - ' ' + 3;
>> + if (s->line_buf_index + repeat >= sizeof(s->line_buf) - 1) {
>> + /* that many repeats would overrun the command buffer */
>> +#ifdef DEBUG_GDB
>> + printf("gdbstub command buffer overrun,"
>> + " dropping command\n");
>> +#endif
>> + s->state = RS_IDLE;
>> + } else if (s->line_buf_index <= 2) {
>
> Why s->line_buf_index <= 2? I expected s->line_buf_index < 1 since we
> just need 1 character to clone for run-length decoding.
>
>> + /* got a repeat but we have nothing to repeat */
>> +#ifdef DEBUG_GDB
>> + printf("gdbstub got invalid RLE sequence\n");
>> +#endif
>> + } else {
>
> Missing s->state = RS_IDLE?