From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46096) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T2OCD-0000Vw-EY for qemu-devel@nongnu.org; Fri, 17 Aug 2012 11:10:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T2OCB-0005zQ-Lp for qemu-devel@nongnu.org; Fri, 17 Aug 2012 11:10:45 -0400 Received: from cantor2.suse.de ([195.135.220.15]:40048 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T2OCB-0005rW-BY for qemu-devel@nongnu.org; Fri, 17 Aug 2012 11:10:43 -0400 Message-ID: <502E5EEB.7030500@suse.de> Date: Fri, 17 Aug 2012 17:10:35 +0200 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1337680210-20569-1-git-send-email-jim@meyering.net> <1337680210-20569-3-git-send-email-jim@meyering.net> <87d32p63ql.fsf@rho.meyering.net> In-Reply-To: <87d32p63ql.fsf@rho.meyering.net> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCHv2 2/2] envlist.c: handle strdup failure List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jim Meyering Cc: qemu-devel@nongnu.org Am 17.08.2012 15:35, schrieb Jim Meyering: > Jim Meyering wrote: >> From: Jim Meyering >> >> Without this, envlist_to_environ may silently fail to copy all >> strings into the destination buffer, and both callers would leak >> any env strings allocated after a failing strdup, because the >> freeing code stops at the first NULL pointer. >> >> Signed-off-by: Jim Meyering >> --- >> envlist.c | 12 ++++++++++-- >> 1 file changed, 10 insertions(+), 2 deletions(-) >> >> diff --git a/envlist.c b/envlist.c >> index be0addb..7532091 100644 >> --- a/envlist.c >> +++ b/envlist.c >> @@ -234,8 +234,16 @@ envlist_to_environ(const envlist_t *envlist, size= _t *count) >> return (NULL); >> >> for (entry =3D envlist->el_entries.lh_first; entry !=3D NULL; >> - entry =3D entry->ev_link.le_next) { >> - *(penv++) =3D strdup(entry->ev_var); >> + entry =3D entry->ev_link.le_next, penv++) { >> + *penv =3D strdup(entry->ev_var); >> + if (*penv =3D=3D NULL) { >> + char **e =3D env; >> + while (e <=3D penv) { >> + free(*e++); >> + } >> + free(env); >> + return NULL; >> + } >> } >> *penv =3D NULL; /* NULL terminate the list */ >=20 > It seems this has been lost in this list's high volume of patches. > Anyone interested? Repost desired? You announced a v3 but replied to v2? Indentation looks odd in 2/2, too. Andreas >=20 > b/envlist.c | 256 ++++++++++++++++++++++++++++++---------------------= --------- > envlist.c | 12 ++ > 2 files changed, 138 insertions(+), 130 deletions(-) >=20 --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg