aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/xc_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/libxc/xc_core.c')
-rw-r--r--tools/libxc/xc_core.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/tools/libxc/xc_core.c b/tools/libxc/xc_core.c
index 43ac87d47f..0c763bbf8f 100644
--- a/tools/libxc/xc_core.c
+++ b/tools/libxc/xc_core.c
@@ -71,8 +71,12 @@ xc_domain_dumpcore(int xc_handle,
(sizeof(vcpu_guest_context_t) * nr_vcpus) +
(nr_pages * sizeof(unsigned long)));
- write(dump_fd, &header, sizeof(struct xc_core_header));
- write(dump_fd, &ctxt, sizeof(ctxt[0]) * nr_vcpus);
+ if (write(dump_fd, &header, sizeof(struct xc_core_header)) < 0 ||
+ write(dump_fd, &ctxt, sizeof(ctxt[0]) * nr_vcpus) < 0)
+ {
+ PERROR("write failed");
+ goto error_out;
+ }
if ((page_array = malloc(nr_pages * sizeof(unsigned long))) == NULL) {
printf("Could not allocate memory\n");
@@ -82,7 +86,11 @@ xc_domain_dumpcore(int xc_handle,
printf("Could not get the page frame list\n");
goto error_out;
}
- write(dump_fd, page_array, nr_pages * sizeof(unsigned long));
+ if (write(dump_fd, page_array, nr_pages * sizeof(unsigned long)) < 0)
+ {
+ PERROR("write failed");
+ goto error_out;
+ }
lseek(dump_fd, header.xch_pages_offset, SEEK_SET);
for (dump_mem = dump_mem_start, i = 0; i < nr_pages; i++) {
copy_from_domain_page(xc_handle, domid, page_array, i, dump_mem);