[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] libxenlight: add fuse around generic_device_add related to invalid kinds



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1263462094 0
# Node ID fd8707f8698d6cc101332187bf080827826a460e
# Parent  94442ca0423d34d2618ce76de196a42ef995873a
libxenlight: add fuse around generic_device_add related to invalid kinds

prevent segfault in case the backend or frontend kinds have
not been set to a correct kind value (or not initilized).

Signed-off-by: Vincent Hanquez <vincent.hanquez@xxxxxxxxxxxxx>
---
 tools/libxl/libxl_device.c   |    5 ++++-
 tools/libxl/libxl_internal.h |    2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff -r 94442ca0423d -r fd8707f8698d tools/libxl/libxl_device.c
--- a/tools/libxl/libxl_device.c        Thu Jan 14 09:40:55 2010 +0000
+++ b/tools/libxl/libxl_device.c        Thu Jan 14 09:41:34 2010 +0000
@@ -26,7 +26,7 @@
 #include "libxl.h"
 #include "libxl_internal.h"
 
-const char *string_of_kinds[] = {
+static const char *string_of_kinds[] = {
     [DEVICE_VIF] = "vif",
     [DEVICE_VBD] = "vbd",
     [DEVICE_TAP] = "tap",
@@ -44,6 +44,9 @@ int libxl_device_generic_add(struct libx
     struct xs_permissions frontend_perms[2];
     struct xs_permissions backend_perms[2];
     struct xs_permissions hotplug_perms[1];
+
+    if (!is_valid_device_kind(device->backend_kind) || 
!is_valid_device_kind(device->kind))
+        return ERROR_INVAL;
 
     dom_path_backend = libxl_xs_get_dompath(ctx, device->backend_domid);
     dom_path = libxl_xs_get_dompath(ctx, device->domid);
diff -r 94442ca0423d -r fd8707f8698d tools/libxl/libxl_internal.h
--- a/tools/libxl/libxl_internal.h      Thu Jan 14 09:40:55 2010 +0000
+++ b/tools/libxl/libxl_internal.h      Thu Jan 14 09:41:34 2010 +0000
@@ -68,7 +68,7 @@ typedef enum {
     DEVICE_CONSOLE,
 } libxl_device_kinds;
 
-extern const char *string_of_kinds[];
+#define is_valid_device_kind(kind) (((kind) >= DEVICE_VIF) && ((kind) <= 
DEVICE_CONSOLE))
 
 typedef struct {
     uint32_t backend_devid;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.