[Libvir] [patch 1/5] iptables: fix invalid free

Mark McLoughlin markmc at redhat.com
Wed Mar 21 13:30:00 UTC 2007


On Wed, 2007-03-21 at 09:03 -0400, Daniel Veillard wrote:
> On Wed, Mar 21, 2007 at 12:47:58PM +0000, Mark McLoughlin wrote:
> > In iptablesContextNew(), make sure we don't try and free an invalid
> > pointer if one of the iptRulesNew() fails.
> > 
> > Signed-off-by: Mark McLoughlin <markmc at redhat.com>
> > 
> > Index: libvirt/qemud/iptables.c
> > ===================================================================
> > --- libvirt.orig/qemud/iptables.c
> > +++ libvirt/qemud/iptables.c
> > @@ -496,7 +496,7 @@ iptablesContextNew(void)
> >  {
> >      iptablesContext *ctx;
> >  
> > -    if (!(ctx = (iptablesContext *) malloc(sizeof (iptablesContext))))
> > +    if (!(ctx = (iptablesContext *) calloc(1, sizeof (iptablesContext))))
> >          return NULL;
> >  
> >      if (!(ctx->input_filter = iptRulesNew("filter", IPTABLES_PREFIX "INPUT")))
> 
>   I usually prefer malloc + memset( , 0, ) , but this probably comes from
> libxml2 where I replaced malloc calls with specific wrappers (and I still
> have a TODO for this in libvirt though some part of libvirt are not linked to
> libxml2 I guess so that may make things a bit harder)

	If libvirt was going to have it's own malloc() wrapper, I'd suggest
that the wrapper should always zero out the allocated memory. Then we
could just replace the calloc() with the wrapper.

	Don't know why we'd use the libxml2 wrappers instead of our own? 

>   What's the policy w.r.t. error reporting in qemud and libvirt related daemons
> in general ? I guess a failure to malloc or thisd kind of problems should be
> logged somewhere, right ?

	Yep. In this case it would be logged either to syslog if the daemon was
autostarting the network or returned to the user in the case where the
user is manually starting network.

Thanks,
Mark.




More information about the libvir-list mailing list