From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27171 invoked by alias); 26 Mar 2010 18:38:14 -0000 Received: (qmail 27154 invoked by uid 22791); 26 Mar 2010 18:38:13 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 26 Mar 2010 18:38:09 +0000 Received: (qmail 5798 invoked from network); 26 Mar 2010 18:38:07 -0000 Received: from unknown (HELO macbook-2.local) (stan@127.0.0.2) by mail.codesourcery.com with ESMTPA; 26 Mar 2010 18:38:07 -0000 Message-ID: <4BACFF09.2040907@codesourcery.com> Date: Fri, 26 Mar 2010 18:38:00 -0000 From: Stan Shebs User-Agent: Thunderbird 2.0.0.24 (Macintosh/20100228) MIME-Version: 1.0 To: Eli Zaretskii CC: Stan Shebs , gdb-patches@sourceware.org Subject: Re: [PATCH] Tracepoint source strings References: <4BABDD35.2000209@codesourcery.com> <83aatvh4pf.fsf@gnu.org> <4BACF406.7080701@codesourcery.com> <83zl1vezan.fsf@gnu.org> In-Reply-To: <83zl1vezan.fsf@gnu.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-03/txt/msg00911.txt.bz2 Eli Zaretskii wrote: >> Date: Fri, 26 Mar 2010 10:51:02 -0700 >> From: Stan Shebs >> CC: Stan Shebs , 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. > What's a better thing to do then? Am I missing something in our current coding preferences for this kind of thing? (Which is entirely possible, oldtimers often get out of date on best practices... :-) ) >>>> 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? > fwrite doesn't know about ints and such; as the man page says, it's just doing repeated putc starting at the given address. The only effect of the two arguments is the way the results are reported, so if you ask to write 2 elements of size 4, but low-level writing fails at byte 6, it's going to report that it wrote 1 element. Kind of a weak API concept, I suspect there are few production uses where neither argument is 1... > 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. > > Indeed, and I will be working on that. Having been so close to this stuff for a while, it's good to get the fresh perspective! Stan