Am 17.08.2012 15:35, schrieb Jim Meyering: > Jim Meyering wrote: >> From: Jim Meyering <meyer...@redhat.com> >> >> 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 <meyer...@redhat.com> >> --- >> 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 = envlist->el_entries.lh_first; entry != NULL; >> - entry = entry->ev_link.le_next) { >> - *(penv++) = strdup(entry->ev_var); >> + entry = entry->ev_link.le_next, penv++) { >> + *penv = strdup(entry->ev_var); >> + if (*penv == NULL) { >> + char **e = env; >> + while (e <= penv) { >> + free(*e++); >> + } >> + free(env); >> + return NULL; >> + } >> } >> *penv = NULL; /* NULL terminate the list */ > > 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 > > b/envlist.c | 256 > ++++++++++++++++++++++++++++++------------------------------ > envlist.c | 12 ++ > 2 files changed, 138 insertions(+), 130 deletions(-) > -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg