libxenlight: fix segfault when domid_to_name returns NULL

The function libxl_domid_to_name() can return NULL if the path
/local/domain/%d/name does not exist.  This causes a segfault if the
NULL name is later passed as a value to libxl_xs_writev().  I'm
hitting this making a call to libxl_device_vfb_add() from my graphical
switcher application.

This patch modifies xs_writev() and libxl_xs_writev() to skip NULL
values.

Signed-off-by: Eamon Walsh <ewalsh@tycho.nsa.gov>
This commit is contained in:
Keir Fraser committed 2010-03-15 13:22:06 +00:00
1 parent 778143a050
commit aec29abd5b
1 file changed
+3 -3
+3 -3
View File
@@ -33,11 +33,11 @@ int xs_writev(struct xs_handle *xsh, xs_transaction_t t, char *dir, char *kvs[])
for (i = 0; kvs[i] != NULL; i += 2) {
asprintf(&path, "%s/%s", dir, kvs[i]);
if (path) {
if (path && kvs[i + 1]) {
int length = strlen(kvs[i + 1]);
xs_write(xsh, t, path, kvs[i + 1], length);
free(path);
}
free(path);
}
return 0;
}
@@ -74,7 +74,7 @@ int libxl_xs_writev(struct libxl_ctx *ctx, xs_transaction_t t,
for (i = 0; kvs[i] != NULL; i += 2) {
path = libxl_sprintf(ctx, "%s/%s", dir, kvs[i]);
if (path) {
if (path && kvs[i + 1]) {
int length = strlen(kvs[i + 1]);
xs_write(ctx->xsh, t, path, kvs[i + 1], length);
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.