From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vincent Hanquez Subject: [PATCH 3/5] add fuse around generic_device_add related to invalid kinds Date: Wed, 13 Jan 2010 16:14:53 +0000 Message-ID: <1263399295-19453-4-git-send-email-vincent.hanquez@eu.citrix.com> References: <1263399295-19453-1-git-send-email-vincent.hanquez@eu.citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------1.6.6" Return-path: In-Reply-To: <1263399295-19453-1-git-send-email-vincent.hanquez@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: Vincent Hanquez List-Id: xen-devel@lists.xenproject.org --------------1.6.6 Content-Type: text/plain; charset="UTF-8"; format=fixed Content-Transfer-Encoding: quoted-printable 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 --- tools/libxl/libxl_device.c | 5 ++++- tools/libxl/libxl_internal.h | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) --------------1.6.6 Content-Type: text/x-patch; name="0003-add-fuse-around-generic_device_add-related-to-invali.patch" Content-Disposition: attachment; filename="0003-add-fuse-around-generic_device_add-related-to-invali.patch" Content-Transfer-Encoding: quoted-printable diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c index 7bbc924..726c543 100644 --- a/tools/libxl/libxl_device.c +++ b/tools/libxl/libxl_device.c @@ -26,7 +26,7 @@ #include "libxl.h" #include "libxl_internal.h" =20 -const char *string_of_kinds[] =3D { +static const char *string_of_kinds[] =3D { [DEVICE_VIF] =3D "vif", [DEVICE_VBD] =3D "vbd", [DEVICE_TAP] =3D "tap", @@ -45,6 +45,9 @@ int libxl_device_generic_add(struct libxl_ctx *ctx, lib= xl_device *device, struct xs_permissions backend_perms[2]; struct xs_permissions hotplug_perms[1]; =20 + if (!is_valid_device_kind(device->backend_kind) || !is_valid_device_= kind(device->kind)) + return ERROR_INVAL; + dom_path_backend =3D libxl_xs_get_dompath(ctx, device->backend_domid= ); dom_path =3D libxl_xs_get_dompath(ctx, device->domid); =20 diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 11698bc..34f2e38 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -68,7 +68,7 @@ typedef enum { DEVICE_CONSOLE, } libxl_device_kinds; =20 -extern const char *string_of_kinds[]; +#define is_valid_device_kind(kind) (((kind) >=3D DEVICE_VIF) && ((kind) = <=3D DEVICE_CONSOLE)) =20 typedef struct { uint32_t backend_devid; --------------1.6.6 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------1.6.6--