aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Jackson <ian.jackson@eu.citrix.com>2013-04-18 17:42:04 +0100
committerIan Jackson <Ian.Jackson@eu.citrix.com>2013-04-18 17:42:04 +0100
commit9f1a6ff38b8e7bb97a016794115de28553a6559f (patch)
tree061723268668de72e60a05c6b43f7e484aed27c4
parente414c4074d9a86a23727a385416fd21b67ee079f (diff)
downloadxen-9f1a6ff38b8e7bb97a016794115de28553a6559f.tar.gz
xen-9f1a6ff38b8e7bb97a016794115de28553a6559f.tar.bz2
xen-9f1a6ff38b8e7bb97a016794115de28553a6559f.zip
libxl: Fix SEGV in network-attach
When "device/vif" directory exists but is empty l!=NULL, but nb==0, so l[nb-1] is invalid. Add missing check. Signed-off-by: Marek Marczykowski <marmarek@invisiblethingslab.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
-rw-r--r--tools/libxl/libxl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index 3a58ef4b36..a6e96017d3 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -2572,7 +2572,8 @@ void libxl__device_nic_add(libxl__egc *egc, uint32_t domid,
goto out_free;
}
if (!(l = libxl__xs_directory(gc, XBT_NULL,
- libxl__sprintf(gc, "%s/device/vif", dompath), &nb))) {
+ libxl__sprintf(gc, "%s/device/vif", dompath), &nb)) ||
+ nb == 0) {
nic->devid = 0;
} else {
nic->devid = strtoul(l[nb - 1], NULL, 10) + 1;