|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxl: Fix NULL pointer due to XSA-178 fix wrong XS nodename
On Wed, Jun 08, 2016 at 03:56:36PM +0100, Ian Jackson wrote:
> In "libxl: Do not trust backend for disk eject vdev" (c69871a2fb26 on
> xen.git#staging) we changed libxl_evenable_disk_eject to read the
> device vdev out of xenstore from the /libxl path, rather than the
> backend path, and to read it during setup rather than on each event.
>
> However, the patch has a mistake:
> - GCSPRINTF("%s/dev", backend), NULL);
> + GCSPRINTF("%s/vdev", libxl_path), &configured_vdev);
> ^
> Spot the extra "v". This causes configured_vdev always to be NULL.
> configured_vdev is passed to [libxl__]strdup.
>
> In Xen 4.6 and later libxl__strdup is used and tolerates NULL.
> evg->vdev is set to NULL. This propagates to the `vdev' field in the
> generated event. This may or may not cause further trouble, depending
> on the calling application. In our osstest test cases it does not
> cause any trouble, so the bug goes undetected.
>
> In Xen 4.5 and earlier, the strdup does not tolerate NULL, and libxl
> crashes immediately. This has been detected by osstest as a
> regression in Xen 4.5.
>
> IMO this patch should be applied immediately to
> xen.git#staging-4.5 (to check that it fixes the osstest regression)
> xen.git#staging (to check that it does not break master
>
> Subject to passes, it should then be propagated to all supported
> stable trees and also be mentioned in an update to XSA-178.
>
> Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
> CC: security@xxxxxxxxxxxxxx
> CC: Jan Beulich <jbeulich@xxxxxxxx>
> CC: Wei Liu <wei.liu2@xxxxxxxxxx>
Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx>
> ---
> tools/libxl/libxl.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> index 006b83f..7584966 100644
> --- a/tools/libxl/libxl.c
> +++ b/tools/libxl/libxl.c
> @@ -1399,7 +1399,7 @@ int libxl_evenable_disk_eject(libxl_ctx *ctx, uint32_t
> guest_domid,
>
> const char *configured_vdev;
> rc = libxl__xs_read_checked(gc, XBT_NULL,
> - GCSPRINTF("%s/vdev", libxl_path), &configured_vdev);
> + GCSPRINTF("%s/dev", libxl_path), &configured_vdev);
> if (rc) goto out;
>
> evg->vdev = libxl__strdup(NOGC, configured_vdev);
> --
> 1.7.10.4
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |