diff options
author | Marek Marczykowski <marmarek@mimuw.edu.pl> | 2011-06-05 16:55:21 +0200 |
---|---|---|
committer | Marek Marczykowski <marmarek@mimuw.edu.pl> | 2011-06-05 16:55:21 +0200 |
commit | 6036c6bde48783143287ec7606e75d293a2c5fa5 (patch) | |
tree | b21d184381e0742bc81f309ef603526f183461e5 | |
parent | e057bfa6c7fe3699722a0e629611d91c97eb80b4 (diff) | |
download | xen-6036c6bde48783143287ec7606e75d293a2c5fa5.tar.gz xen-6036c6bde48783143287ec7606e75d293a2c5fa5.tar.bz2 xen-6036c6bde48783143287ec7606e75d293a2c5fa5.zip |
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 <marmarek@mimuw.edu.pl>
xen-unstable changest: 23607:2f63562df1c4
Backport-requested-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
-rw-r--r-- | tools/libxl/libxl.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 73f155c700..902f28236b 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1724,6 +1724,7 @@ static unsigned int libxl_append_disk_list_of_type(libxl_ctx *ctx, 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; @@ -1742,7 +1743,11 @@ static unsigned int libxl_append_disk_list_of_type(libxl_ctx *ctx, libxl__sprintf(&gc, "%s/%s/type", be_path, *dir)), &(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 |