[libvirt] [PATCH] Fix closedir usage in virNumaGetPages

Michal Privoznik mprivozn at redhat.com
Mon Jun 23 11:46:59 UTC 2014


On 21.06.2014 17:29, Roman Bogorodskiy wrote:
> virNumaGetPages calls closedir(dir) in cleanup and dir could
> be NULL if we jump there from the failed opendir() call.
>
> While it's not harmful on Linux, FreeBSD libc crashes [1], so
> make sure that dir is not NULL before calling closedir.
>
> 1: http://lists.freebsd.org/pipermail/freebsd-standards/2014-January/002704.html
> ---
>   src/util/virnuma.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/util/virnuma.c b/src/util/virnuma.c
> index c8e7f40..1048033 100644
> --- a/src/util/virnuma.c
> +++ b/src/util/virnuma.c
> @@ -836,7 +836,8 @@ virNumaGetPages(int node,
>       VIR_FREE(tmp_free);
>       VIR_FREE(tmp_avail);
>       VIR_FREE(tmp_size);
> -    closedir(dir);
> +    if (dir)
> +        closedir(dir);
>       VIR_FREE(path);
>       return ret;
>   }
>

So why is free(NULL) safe on FreeBSD then? I'd call this a libc bug not 
a libvirt one. But since even we already have such borken design 
(remember our publir vir*Free() APIs?) I can live with this patch.

ACK




More information about the libvir-list mailing list