Hi Karel, On Mon, 2007-01-29 at 09:27 +0100, Karel Zak wrote: > pedant's quick glance: ;-) > > On Thu, Jan 25, 2007 at 03:52:03PM +0000, Mark McLoughlin wrote: > > @@ -761,6 +813,61 @@ static int qemudParseXML(struct qemud_se > > } > > > > > > +static char * > > +qemudNetworkIfaceConnect(struct qemud_server *server, > > + struct qemud_vm *vm, > > + struct qemud_vm_net_def *net) > > +{ > > ..... > > > + > > + snprintf(tapfdstr, sizeof(tapfdstr), "tap,fd=%d,script=", tapfd); > > + > > + return strdup(tapfdstr); > ^^^^^^^^^^^^^^^^^^^ > where is allocation check? > > if ((p = strdup(tapfdstr))) > return p; Very well spotted ... I've also moved the strdup() to before the tapfds realloc() so as to not leave that in a weird state if the strdup() fails. > > + if (net->type == QEMUD_NET_NETWORK) { > > + if (qemudBufferPrintf(&buf, " <network name='%s", net->dst.network.name) < 0) > > + goto no_memory; > > + > > + if (net->dst.network.tapifname[0] != '\0' && > > + qemudBufferPrintf(&buf, " tapifname='%s'", net->dst.network.tapifname) < 0) > > + goto no_memory; > > + > > + if (qemudBufferPrintf(&buf, "/>\n") < 0) > > + goto no_memory; > > + } > > + > > if (qemudBufferPrintf(&buf, " </interface>\n") < 0) > ^^^^^^ > > There is also BufferAdd() which is cheaper than Printf if you > needn't any string formatting. That's one for Dan ... notice the way it's not actually in my patch. I did actually think the same thing myself at the time ... :-) Thanks, Mark.