|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] libxl: Do not trust frontend for vtpm list
commit 0527125a6aae58a7eee8078184fced49dc2422ef
Author: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
AuthorDate: Tue May 3 15:58:32 2016 +0100
Commit: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
CommitDate: Thu Jun 2 15:53:28 2016 +0100
libxl: Do not trust frontend for vtpm list
libxl_device_vtpm_list needs to enumerate and identify devices without
trusting frontend-controlled data. So
* Use the /libxl path to enumerate vtpms.
* Use the /libxl path to find the corresponding backends.
* Parse the backend path to find the backend domid.
This is part of XSA-175.
Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
tools/libxl/libxl.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index d2b1799..c8ad33c 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -2176,14 +2176,15 @@ libxl_device_vtpm *libxl_device_vtpm_list(libxl_ctx
*ctx, uint32_t domid, int *n
GC_INIT(ctx);
libxl_device_vtpm* vtpms = NULL;
- char* fe_path = NULL;
+ char *libxl_path;
char** dir = NULL;
unsigned int ndirs = 0;
+ int rc;
*num = 0;
- fe_path = GCSPRINTF("%s/device/vtpm", libxl__xs_get_dompath(gc, domid));
- dir = libxl__xs_directory(gc, XBT_NULL, fe_path, &ndirs);
+ libxl_path = GCSPRINTF("%s/device/vtpm", libxl__xs_libxl_path(gc, domid));
+ dir = libxl__xs_directory(gc, XBT_NULL, libxl_path, &ndirs);
if (dir && ndirs) {
vtpms = malloc(sizeof(*vtpms) * ndirs);
libxl_device_vtpm* vtpm;
@@ -2192,16 +2193,15 @@ libxl_device_vtpm *libxl_device_vtpm_list(libxl_ctx
*ctx, uint32_t domid, int *n
char* tmp;
const char* be_path = libxl__xs_read(gc, XBT_NULL,
GCSPRINTF("%s/%s/backend",
- fe_path, *dir));
+ libxl_path, *dir));
libxl_device_vtpm_init(vtpm);
vtpm->devid = atoi(*dir);
- tmp = libxl__xs_read(gc, XBT_NULL,
- GCSPRINTF("%s/%s/backend-id",
- fe_path, *dir));
- vtpm->backend_domid = atoi(tmp);
+ rc = libxl__backendpath_parse_domid(gc, be_path,
+ &vtpm->backend_domid);
+ if (rc) return NULL;
tmp = libxl__xs_read(gc, XBT_NULL, GCSPRINTF("%s/uuid", be_path));
if (tmp) {
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |