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