mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
libxc: Do not segfault if (e.g.) switch_qemu_logdirty fails
In xc_domain_save the local variable `ob' is initialised to NULL. There are then various startup actions. Some of these `goto out' on failure; for example the call to callbacks->switch_qemu_logdirty on l.978. However, out is used both by success and error paths. So it attempts (l.2043) to flush the current output buffer. If ob has not yet been assigned a non-NULL value, this segfaults. So make the call to outbuf_flush conditional on ob. Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
This commit is contained in:
1 parent
0f8d5c6087
commit
f0db674c64
1 file changed
+1
-1
@@ -2040,7 +2040,7 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter
|
||||
}
|
||||
|
||||
/* Flush last write and discard cache for file. */
|
||||
if ( outbuf_flush(xch, ob, io_fd) < 0 ) {
|
||||
if ( ob && outbuf_flush(xch, ob, io_fd) < 0 ) {
|
||||
PERROR("Error when flushing output buffer");
|
||||
rc = 1;
|
||||
}
|
||||
|
||||