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@xxxxxxxxxx> > > > > 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.