aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Jackson <ian.jackson@eu.citrix.com>2013-04-18 17:44:17 +0100
committerIan Jackson <Ian.Jackson@eu.citrix.com>2013-04-18 17:44:17 +0100
commit21c31a811ca1705b71417fab520d9b39ae2ab3a7 (patch)
tree9e9922625298390b8b7dc99d6069bfc41805eb41
parenta12ed396652c22988e0e7a3f5bd57c882872da8e (diff)
downloadxen-21c31a811ca1705b71417fab520d9b39ae2ab3a7.tar.gz
xen-21c31a811ca1705b71417fab520d9b39ae2ab3a7.tar.bz2
xen-21c31a811ca1705b71417fab520d9b39ae2ab3a7.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> (cherry picked from commit 9f1a6ff38b8e7bb97a016794115de28553a6559f) Conflicts: tools/libxl/libxl.c 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 19ef6a0196..fbc6c07b72 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -1207,7 +1207,8 @@ int libxl_device_nic_add(libxl_ctx *ctx, uint32_t domid, libxl_device_nic *nic)
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;