[libvirt] [PATCH v3 02/34] Adapt to VIR_STRDUP and VIR_STRNDUP in daemon/*

Eric Blake eblake at redhat.com
Fri May 3 20:13:01 UTC 2013


On 05/03/2013 08:53 AM, Michal Privoznik wrote:
> ---
>  daemon/libvirtd-config.c |  50 +++++----------
>  daemon/libvirtd.c        |  29 +++++----
>  daemon/remote.c          | 161 ++++++++++++++++++-----------------------------
>  3 files changed, 92 insertions(+), 148 deletions(-)
> 

Good sign that our interface is nice, because using it shrinks the code
base.

> @@ -287,10 +287,10 @@ daemonUnixSocketPaths(struct daemonConfig *config,
>              goto no_memory;
>      } else {
>          if (privileged) {
> -            if (!(*sockfile = strdup(LOCALSTATEDIR "/run/libvirt/libvirt-sock")))
> -                goto no_memory;
> -            if (!(*rosockfile = strdup(LOCALSTATEDIR "/run/libvirt/libvirt-sock-ro")))
> -                goto no_memory;
> +            if (VIR_STRDUP(*sockfile, LOCALSTATEDIR "/run/libvirt/libvirt-sock") < 0)
> +                goto error;
> +            if (VIR_STRDUP(*rosockfile, LOCALSTATEDIR "/run/libvirt/libvirt-sock-ro") < 0)
> +                goto error;

Could merge these two 'if' into one, especially since you were doing it
elsewhere in this patch, but not essential.

> @@ -1172,7 +1173,7 @@ int main(int argc, char **argv) {
>  
>          case 'p':
>              VIR_FREE(pid_file);
> -            if (!(pid_file = strdup(optarg))) {
> +            if (VIR_STRDUP_QUIET(pid_file, optarg) < 0) {
>                  VIR_ERROR(_("Can't allocate memory"));
>                  exit(EXIT_FAILURE);

One of the few cases where _QUIET is right, since main() is early enough
that normal error reporting may not be initialized yet :)

> @@ -473,18 +447,18 @@ static int remoteRelayDomainEventDiskChange(virConnectPtr conn ATTRIBUTE_UNUSED,
>      memset(&data, 0, sizeof(data));
>      if (oldSrcPath &&
>          ((VIR_ALLOC(oldSrcPath_p) < 0) ||
> -         !(*oldSrcPath_p = strdup(oldSrcPath))))
> +         VIR_STRDUP(*oldSrcPath_p, oldSrcPath) < 0))
>          goto mem_error;

Yep, I said I could live with the double OOM for now, and that we'll
clean it up when we make our next pass over VIR_ALLOC.

> @@ -4779,14 +4739,14 @@ static void
>  make_nonnull_domain(remote_nonnull_domain *dom_dst, virDomainPtr dom_src)
>  {
>      dom_dst->id = dom_src->id;
> -    dom_dst->name = strdup(dom_src->name);
> +    ignore_value(VIR_STRDUP_QUIET(dom_dst->name, dom_src->name));
>      memcpy(dom_dst->uuid, dom_src->uuid, VIR_UUID_BUFLEN);

Aargh, I promised to work on this, and still haven't gotten around to
it.  But it's an independent cleanup to make the make_nonnull_ functions
not return half-baked objects, so doesn't hold up your patch.

ACK.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130503/097c0239/attachment-0001.sig>


More information about the libvir-list mailing list