diff options
author | Ian Jackson <ian.jackson@eu.citrix.com> | 2013-04-18 17:44:17 +0100 |
---|---|---|
committer | Ian Jackson <Ian.Jackson@eu.citrix.com> | 2013-04-18 17:44:17 +0100 |
commit | 21c31a811ca1705b71417fab520d9b39ae2ab3a7 (patch) | |
tree | 9e9922625298390b8b7dc99d6069bfc41805eb41 | |
parent | a12ed396652c22988e0e7a3f5bd57c882872da8e (diff) | |
download | xen-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.c | 3 |
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; |