aboutsummaryrefslogtreecommitdiffstats
path: root/tools/console
diff options
context:
space:
mode:
authorAndrew Cooper <andrew.cooper3@citrix.com>2013-03-07 16:20:50 +0000
committerIan Jackson <Ian.Jackson@eu.citrix.com>2013-03-07 17:53:55 +0000
commite31d4781c0e04bec01135dea0cb7d634ee035cd3 (patch)
tree31da289283f24313bc2a9b84557e1fca205a0163 /tools/console
parent9581c4f9a55372a21e759cd449cb676d0e8feddb (diff)
downloadxen-e31d4781c0e04bec01135dea0cb7d634ee035cd3.tar.gz
xen-e31d4781c0e04bec01135dea0cb7d634ee035cd3.tar.bz2
xen-e31d4781c0e04bec01135dea0cb7d634ee035cd3.zip
tools/xenconsoled: Initialise pointers before trying to use them
This is a regression introduced by "Switch from select() to poll() in xenconsoled's IO loop." hg c/s 26405:7359c3122c5d git cc5434c933153c4b8812d1df901f8915c22830a8 which results in reliable segfaults during VM power operations. Switch to calloc(3) in an effort to avoid similar problems with changes in the future. Signed-off-by: Marcus Granado <marcus.granado@citrix.com> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Diffstat (limited to 'tools/console')
-rw-r--r--tools/console/daemon/io.c12
1 files changed, 1 insertions, 11 deletions
diff --git a/tools/console/daemon/io.c b/tools/console/daemon/io.c
index 176ac3cc53..50f91b58dd 100644
--- a/tools/console/daemon/io.c
+++ b/tools/console/daemon/io.c
@@ -651,7 +651,7 @@ static struct domain *create_domain(int domid)
return NULL;
}
- dom = (struct domain *)malloc(sizeof(struct domain));
+ dom = calloc(1, sizeof *dom);
if (dom == NULL) {
dolog(LOG_ERR, "Out of memory %s:%s():L%d",
__FILE__, __FUNCTION__, __LINE__);
@@ -672,21 +672,11 @@ static struct domain *create_domain(int domid)
dom->slave_fd = -1;
dom->log_fd = -1;
- dom->is_dead = false;
- dom->buffer.data = 0;
- dom->buffer.consumed = 0;
- dom->buffer.size = 0;
- dom->buffer.capacity = 0;
- dom->buffer.max_capacity = 0;
- dom->event_count = 0;
dom->next_period = ((long long)ts.tv_sec * 1000) + (ts.tv_nsec / 1000000) + RATE_LIMIT_PERIOD;
- dom->next = NULL;
dom->ring_ref = -1;
dom->local_port = -1;
dom->remote_port = -1;
- dom->interface = NULL;
- dom->xce_handle = NULL;
if (!watch_domain(dom, true))
goto out;