On 05/20/2013 07:55 PM, Michal Privoznik wrote: > --- > src/xenxs/xen_sxpr.c | 200 ++++++++++++++++++++++----------------------------- > src/xenxs/xen_xm.c | 91 +++++++++++------------ > 2 files changed, 125 insertions(+), 166 deletions(-) > > diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c > index 9a76d04..aa99a61 100644 > --- a/src/xenxs/xen_sxpr.c > +++ b/src/xenxs/xen_sxpr.c > @@ -238,18 +236,14 @@ xenParseSxprChar(const char *value, > } > > if (offset != value && > - (def->source.data.tcp.host = strndup(value, > - offset - value)) == NULL) > - goto no_memory; > + VIR_STRNDUP(def->source.data.tcp.host, value, offset - value) < 0) > + goto error; > > offset2 = strchr(offset, ','); > - if (offset2 == NULL) > - def->source.data.tcp.service = strdup(offset+1); > - else > - def->source.data.tcp.service = strndup(offset+1, > - offset2-(offset+1)); > - if (def->source.data.tcp.service == NULL) > - goto no_memory; > + if ((offset && VIR_STRNDUP(def->source.data.tcp.service, > + offset + 1, offset2 - offset - 1) < 0) || > + (!offset && VIR_STRDUP(def->source.data.tcp.service, offset + 1) < 0)) > + goto error; Change offset to offset2 at the beginning of the condition. Or you could do it with just one VIR_STRNDUP call: offset++; if (VIR_STRNDUP(def->source.data.tcp.service, offset, offset2 ? offset2 - offset : strlen(offset)) < 0) goto error; > > if (offset2 && strstr(offset2, ",server")) > def->source.data.tcp.listen = true; ACK Jan -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list