[RFA] off by one array reference in i386-low.c/i386_show_dr

Michael Snyder msnyder@vmware.com
Sun Feb 27 22:05:00 GMT 2011


Mark Kettenis wrote:
>> Date: Sun, 27 Feb 2011 13:27:31 -0800
>> From: Michael Snyder <msnyder@vmware.com>
>>
>>>> --- i386-low.c	1 Jan 2011 15:33:24 -0000	1.5
>>>> +++ i386-low.c	26 Feb 2011 22:48:38 -0000
>>> /* A macro to loop over all debug registers.  */
>>> #define ALL_DEBUG_REGISTERS(i)  for (i = 0; i < DR_NADDR; i++)
>>>> @@ -195,7 +195,7 @@ i386_show_dr (struct i386_debug_reg_stat
>>>   ALL_DEBUG_REGISTERS(i)
>>>     {
>>>       printf_unfiltered ("\
>>>>  \tDR%d: addr=0x%s, ref.count=%d  DR%d: addr=0x%s, ref.count=%d\n",
>>>>  	      i, paddress (state->dr_mirror[i]),
>>>>  	      state->dr_ref_count[i],
>>>> -	      i + 1, paddress (state->dr_mirror[i + 1]),
>>>> +	      i + 1, paddress (state->dr_mirror[i]),
>>>>  	      state->dr_ref_count[i + 1]);
>>>>        i++;
>>>>      }
>>> ->
>>> 	CONTROL (DR7): 0000000000090101          STATUS (DR6): 0000000000004000
>>> 	DR0: addr=0x0000000001c31f30, ref.count=1  DR1: addr=0x0000000000000000, ref.count=0
>>> 	DR2: addr=0x0000000000000000, ref.count=0  DR3: addr=0x0000000000000000, ref.count=0
>>>
>>> I do not see a bug there; still it could be better commented.
>> The bug is that when "i" is 3, "i + 1" is 4, and the array only runs
>> from 0 to 3.
> 
> But i can't be 3.


Ah, ok, I'm finally seeing it.
So this is a false positive from Coverity.
This patch withdrawn.

Thanks for the review.



More information about the Gdb-patches mailing list