aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-01-08 11:44:15 +0000
committerKeir Fraser <keir.fraser@citrix.com>2010-01-08 11:44:15 +0000
commit823db1c4ab13e599f324ab5b82df22a5251d9272 (patch)
tree905118e766c8a8712a796431282721b695eb66aa
parent55a8fc5f3bb65bcc5378f0741a593e006cdd0a69 (diff)
downloadxen-823db1c4ab13e599f324ab5b82df22a5251d9272.tar.gz
xen-823db1c4ab13e599f324ab5b82df22a5251d9272.tar.bz2
xen-823db1c4ab13e599f324ab5b82df22a5251d9272.zip
libxenlight: don't ignore ctx_init errors if there is one.
ctx_init can return error, and ignoring the errors, would lead to segfault later. fix all call sites to check return values. Signed-off-by: Vincent Hanquez <vincent.hanquez@eu.citrix.com>
-rw-r--r--tools/libxl/xl.c61
1 files changed, 49 insertions, 12 deletions
diff --git a/tools/libxl/xl.c b/tools/libxl/xl.c
index bc7378c5a9..79d2f6cb88 100644
--- a/tools/libxl/xl.c
+++ b/tools/libxl/xl.c
@@ -762,7 +762,11 @@ static void create_domain(int debug, int daemonize, const char *config_file, con
start:
domid = 0;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
+
libxl_ctx_set_log(&ctx, log_callback, NULL);
libxl_domain_make(&ctx, &info1, &domid);
@@ -974,7 +978,10 @@ void set_memory_target(char *p, char *mem)
struct libxl_ctx ctx;
uint32_t domid;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
if (domain_qualifier_to_domid(&ctx, p, &domid) < 0) {
@@ -1016,7 +1023,10 @@ void console(char *p, int cons_num)
struct libxl_ctx ctx;
uint32_t domid;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
if (domain_qualifier_to_domid(&ctx, p, &domid) < 0) {
@@ -1033,7 +1043,10 @@ void cd_insert(char *dom, char *virtdev, char *phys)
libxl_device_disk disk;
char *p;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
if (domain_qualifier_to_domid(&ctx, dom, &domid) < 0) {
@@ -1166,7 +1179,10 @@ void pcilist(char *dom)
libxl_device_pci *pcidevs;
int num, i;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
if (domain_qualifier_to_domid(&ctx, dom, &domid) < 0) {
@@ -1216,7 +1232,10 @@ void pcidetach(char *dom, char *bdf)
libxl_device_pci pcidev;
unsigned int domain, bus, dev, func;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
if (domain_qualifier_to_domid(&ctx, dom, &domid) < 0) {
@@ -1262,7 +1281,10 @@ void pciattach(char *dom, char *bdf, char *vs)
libxl_device_pci pcidev;
unsigned int domain, bus, dev, func;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
if (domain_qualifier_to_domid(&ctx, dom, &domid) < 0) {
@@ -1310,7 +1332,10 @@ void pause_domain(char *p)
struct libxl_ctx ctx;
uint32_t domid;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
if (domain_qualifier_to_domid(&ctx, p, &domid) < 0) {
@@ -1325,7 +1350,10 @@ void unpause_domain(char *p)
struct libxl_ctx ctx;
uint32_t domid;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
if (domain_qualifier_to_domid(&ctx, p, &domid) < 0) {
@@ -1340,7 +1368,10 @@ void destroy_domain(char *p)
struct libxl_ctx ctx;
uint32_t domid;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
if (domain_qualifier_to_domid(&ctx, p, &domid) < 0) {
@@ -1356,7 +1387,10 @@ void list_domains(void)
struct libxl_dominfo *info;
int nb_domain, i;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ return;
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
info = libxl_domain_list(&ctx, &nb_domain);
@@ -1383,7 +1417,10 @@ int save_domain(char *p, char *filename, int checkpoint)
uint32_t domid;
int fd;
- libxl_ctx_init(&ctx, LIBXL_VERSION);
+ if (libxl_ctx_init(&ctx, LIBXL_VERSION)) {
+ fprintf(stderr, "cannot init xl context\n");
+ exit(2);
+ }
libxl_ctx_set_log(&ctx, log_callback, NULL);
if (domain_qualifier_to_domid(&ctx, p, &domid) < 0) {