[lxc-devel] [PATCH] fix getline(3) memory leaks

Serge Hallyn serge.hallyn at ubuntu.com
Wed May 22 01:27:30 UTC 2013


Quoting Dwight Engen (dwight.engen at oracle.com):
> On Tue, 21 May 2013 17:07:54 -0500
> Serge Hallyn <serge.hallyn at ubuntu.com> wrote:
> 
> > Quoting Dwight Engen (dwight.engen at oracle.com):
> > > Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
> > > ---
> > >  src/lxc/attach.c | 2 +-
> > >  src/lxc/cgroup.c | 1 +
> > >  2 files changed, 2 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/src/lxc/attach.c b/src/lxc/attach.c
> > > index a7e9074..d8b4915 100644
> > > --- a/src/lxc/attach.c
> > > +++ b/src/lxc/attach.c
> > > @@ -114,6 +114,7 @@ struct lxc_proc_context_info
> > > *lxc_proc_get_context_info(pid_t pid) }
> > >  	}
> > >  
> > 
> > does this need to be
> > 
> > 	if (line)
> > 		free(line);
> > ?
> 
> Hmm, I guess that would be good defensive programming but it seemed
> unlikely to me that getline() would find no lines
> in /proc/<pid>/status. line was initialized to NULL, so at worst we'd
> free(NULL), which I guess not every free() handles well. If you think
> we should put the if in I'm fine with that :)

Yeah I've tested before (because I used to want to think glibc would
check for that) and it definately segvs.  I'll push this patch with
that added.

Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>


> > > +	free(line);
> > >  	fclose(proc_file);
> > >  
> > >  	if (!found) {
> > > @@ -145,7 +146,6 @@ struct lxc_proc_context_info
> > > *lxc_proc_get_context_info(pid_t pid) 
> > >  out_error:
> > >  	free(info);
> > > -	free(line);
> > >  	return NULL;
> > >  }
> > >  
> > > diff --git a/src/lxc/cgroup.c b/src/lxc/cgroup.c
> > > index 44266de..2ffbb54 100644
> > > --- a/src/lxc/cgroup.c
> > > +++ b/src/lxc/cgroup.c
> > > @@ -503,6 +503,7 @@ static char *get_all_cgroups(void)
> > >  	}
> > >  
> > >  out:
> > > +	free(line);
> > >  	fclose(f);
> > >  	return ret;
> > >  }
> > > -- 
> > > 1.8.1.4
> > > 
> > > 
> > > ------------------------------------------------------------------------------
> > > Try New Relic Now & We'll Send You this Cool Shirt
> > > New Relic is the only SaaS-based application performance monitoring
> > > service that delivers powerful full stack analytics. Optimize and
> > > monitor your browser, app, & servers with just a few lines of code.
> > > Try New Relic and get this awesome Nerd Life shirt!
> > > http://p.sf.net/sfu/newrelic_d2d_may
> > > _______________________________________________ Lxc-devel mailing
> > > list Lxc-devel at lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/lxc-devel
> 




More information about the lxc-devel mailing list