From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Marczykowski Subject: [PATCH 6 of 6 RESENT] libxl: Do not SEGV when no 'removable' disk parameter in xenstore Date: Sun, 05 Jun 2011 18:50:36 +0200 Message-ID: <70fc2a0f0a6003f1bf59.1307292636@devel14> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: 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: marmarek@mimuw.edu.pl List-Id: xen-devel@lists.xenproject.org # HG changeset patch # User Marek Marczykowski # Date 1307145395 -7200 # Node ID 70fc2a0f0a6003f1bf591cd941a841a9e6b69c01 # Parent 0c0f9e1bd14073b5cb1d4f58b6950d16128003fa libxl: Do not SEGV when no 'removable' disk parameter in xenstore Just assume disk as not removable when no 'removable' paremeter Signed-off-by: Marek Marczykowski diff -r 0c0f9e1bd140 -r 70fc2a0f0a60 tools/libxl/libxl.c --- a/tools/libxl/libxl.c Sat Jun 04 01:52:11 2011 +0200 +++ b/tools/libxl/libxl.c Sat Jun 04 01:56:35 2011 +0200 @@ -1563,6 +1563,7 @@ static unsigned int libxl__append_disk_l libxl__xs_get_dompath(gc, 0), type, domid); dir = libxl__xs_directory(gc, XBT_NULL, be_path, &n); if (dir) { + char *removable; *disks = realloc(*disks, sizeof (libxl_device_disk) * (*ndisks + n)); pdisk = *disks + *ndisks; *ndisks += n; @@ -1581,6 +1582,11 @@ static unsigned int libxl__append_disk_l &(pdisk->backend)); pdisk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(gc, "%s/%s/dev", be_path, *dir), &len); pdisk->unpluggable = atoi(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir))); + removable = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir)); + if (removable) + pdisk->unpluggable = atoi(removable); + else + pdisk->unpluggable = 0; if (!strcmp(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/mode", be_path, *dir)), "w")) pdisk->readwrite = 1; else