[libvirt] [PATCH 2/2] Adapt to new VIR_STRNDUP behavior

Michal Privoznik mprivozn at redhat.com
Fri May 24 12:57:59 UTC 2013


On 24.05.2013 11:53, Michal Privoznik wrote:
> With previous patch, we accept negative value as length of string to
> duplicate. So there is no need to pass strlen(src) in case we want to do
> duplicate the whole string.
> ---
>  src/conf/domain_conf.c  |  6 ++----
>  src/qemu/qemu_command.c | 14 ++++++--------
>  src/util/virsexpr.c     |  2 +-
>  src/xenxs/xen_sxpr.c    |  4 ++--
>  4 files changed, 11 insertions(+), 15 deletions(-)
> 

> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 434f5a7..0373626 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -8674,7 +8674,7 @@ static int qemuStringToArgvEnv(const char *args,
>          if (!next)
>              next = strchr(curr, '\n');
>  
> -        if (VIR_STRNDUP(arg, curr, next ? next - curr : strlen(curr)) < 0)
> +        if (VIR_STRNDUP(arg, curr, next ? next - curr : -1) < 0)

Or we can even go with 'VIR_STRNDUP(arg, curr, next - curr) < 0' but
that's not so easy to read. The rationale behind is: I intentionally
made VIR_STRNDUP to accept *any* negative value, not just -1. Because if
strrchr(cur, '\n') just a few lines above fails, next is just NULL.
Deducting from NULL will get a negative value. Which will make
VIR_STRNDUP duplicate the while string. But I worry that it would be an
ugly code, wouldn't it?

Michal




More information about the libvir-list mailing list