From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6541 invoked by alias); 8 Aug 2007 21:48:12 -0000 Received: (qmail 6494 invoked by uid 22791); 8 Aug 2007 21:48:11 -0000 X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 08 Aug 2007 21:48:01 +0000 Received: (qmail 10412 invoked from network); 8 Aug 2007 21:48:00 -0000 Received: from unknown (HELO localhost) (jimb@127.0.0.2) by mail.codesourcery.com with ESMTPA; 8 Aug 2007 21:48:00 -0000 To: msnyder@sonic.net Cc: gdb-patches@sourceware.org Subject: Re: [patch] target_read_string, potential memory leak. References: <13153.12.7.175.2.1186284546.squirrel@webmail.sonic.net> <15524.12.7.175.2.1186597958.squirrel@webmail.sonic.net> From: Jim Blandy Date: Wed, 08 Aug 2007 21:48:00 -0000 In-Reply-To: <15524.12.7.175.2.1186597958.squirrel@webmail.sonic.net> (msnyder@sonic.net's message of "Wed, 8 Aug 2007 11:32:38 -0700 (PDT)") Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-IsSubscribed: yes 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: 2007-08/txt/msg00162.txt.bz2 msnyder@sonic.net writes: >> msnyder@sonic.net writes: >>> OK -- it would be pretty stupid to call target_read_string without >>> passing it a buffer, but if we're going to check it for null... >> >> I don't think the contract for target_read_string permits STRING to be >> null. I think either the test should go, or we should add a >> gdb_assert (string). > > Agreed. Thus? Agreed, thus. :) > Index: target.c > =================================================================== > RCS file: /cvs/src/src/gdb/target.c,v > retrieving revision 1.145 > diff -p -r1.145 target.c > *** target.c 24 Jul 2007 12:49:24 -0000 1.145 > --- target.c 8 Aug 2007 18:31:57 -0000 > *************** target_read_string (CORE_ADDR memaddr, c > *** 919,924 **** > --- 919,926 ---- > char *bufptr; > unsigned int nbytes_read = 0; > > + gdb_assert (string); > + > /* Small for testing. */ > buffer_allocated = 4; > buffer = xmalloc (buffer_allocated); > *************** target_read_string (CORE_ADDR memaddr, c > *** 968,977 **** > nbytes_read += tlen; > } > done: > if (errnop != NULL) > *errnop = errcode; > - if (string != NULL) > - *string = buffer; > return nbytes_read; > } > > --- 970,978 ---- > nbytes_read += tlen; > } > done: > + *string = buffer; > if (errnop != NULL) > *errnop = errcode; > return nbytes_read; > } >