[PATCH] Tracepoint source strings

Eli Zaretskii eliz@gnu.org
Fri Mar 26 18:03:00 GMT 2010


> Date: Fri, 26 Mar 2010 10:51:02 -0700
> From: Stan Shebs <stan@codesourcery.com>
> CC: Stan Shebs <stan@codesourcery.com>, gdb-patches@sourceware.org
> 
> Eli Zaretskii wrote:
> >>   struct breakpoint *
> >>   create_tracepoint_from_upload (struct uploaded_tp *utp)
> >>   {
> >> !   char *addr_str, small_buf[100];
> >>   [...]
> >> !       sprintf (small_buf, "*%s", hex_string (utp->addr));
> >>     
> >
> > Tz-tz-tz... Using a constant-size buffer in sprintf without any check
> > for overflow?  Are you sure that calling the buffer ``small'' will
> > magically keep you from trouble? ;-)
> >   
> 
> Presumably even a hypothetical future 128-bit address won't need more 
> than 65 chars to print. :-)

Yes, and then someone comes up and changes the code to put there
something in addition to the address (you already prepend an asterisk
to it).

But if I'm the only one who is bothered by this, I withdraw my
objections.

> >>     written = fwrite ("\x7fTRACE0\n", 8, 1, fp);
> >> !   if (written < 8)
> >>       perror_with_name (pathname);
> >>   
> >>     /* Write descriptive info.  */
> >> --- 2468,2474 ----
> >>        binary file, plus a hint as what this file is, and a version
> >>        number in case of future needs.  */
> >>     written = fwrite ("\x7fTRACE0\n", 8, 1, fp);
> >> !   if (written < 1)
> >>       perror_with_name (pathname);
> >>     
> >
> > Why did you change this to accept partial writes?
> >   
> 
> I was hoping to fix a major brain cramp of mine without anybody noticing 
> - oh well. :-)  The two numeric arguments to fwrite are semi-redundant a 
> la calloc, and the return result is based on the *second* argument, 
> which is the number of "items".

So you are writing a string as if it were an 8-byte int?  Won't that
swap bytes on some architectures?  And why pretend that a string is a
number, anyway?

As for the rest, my questions were meant to signal that portions of
the description are not clear enough, and could use some more explicit
description and/or references to other parts of the manual.



More information about the Gdb-patches mailing list