|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 3/3] libxl: reduce code duplication in libxl_device_vtpm_list
Use recently introduced helper libxl__get_backend_from_xs_fe to handle
backend path and domid. This also improve security as the helper
performs various checks on frontend controlled entries.
Signed-off-by: Marek Marczykowski <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
---
tools/libxl/libxl.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index cb4a2a8..1d53cac 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -1917,24 +1917,27 @@ libxl_device_vtpm *libxl_device_vtpm_list(libxl_ctx
*ctx, uint32_t domid, int *n
fe_path = libxl__sprintf(gc, "%s/device/vtpm", libxl__xs_get_dompath(gc,
domid));
dir = libxl__xs_directory(gc, XBT_NULL, fe_path, &ndirs);
- if(dir) {
+ if(dir && ndirs) {
vtpms = malloc(sizeof(*vtpms) * ndirs);
libxl_device_vtpm* vtpm;
libxl_device_vtpm* end = vtpms + ndirs;
for(vtpm = vtpms; vtpm < end; ++vtpm, ++dir) {
char* tmp;
- const char* be_path = libxl__xs_read(gc, XBT_NULL,
- GCSPRINTF("%s/%s/backend",
- fe_path, *dir));
+ const char* be_path;
+ int be_domid;
+
+ be_domid = libxl__get_backend_from_xs_fe(gc,
+ GCSPRINTF("%s/%s", fe_path, *dir), &be_path);
+ if (be_domid < 0) {
+ free(vtpms);
+ return NULL;
+ }
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);
+ vtpm->backend_domid = be_domid;
tmp = libxl__xs_read(gc, XBT_NULL, GCSPRINTF("%s/uuid", be_path));
if (tmp) {
--
1.8.1.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |