This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


On Sun, 27 Feb 2011 22:27:31 +0100, Michael Snyder wrote:
> Jan Kratochvil wrote:
> >Hi Michael,
> >On Sat, 26 Feb 2011 23:52:23 +0100, Michael Snyder wrote:
> >>--- 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" is never 3.  "i" is 0 during the first cycle and 2 during the second
cycle.  And then the for cycle ends.  There is no 1 and there is no 3.


Regards,
Jan


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]