mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
lib/proto.c: Avoid generating events for incorrect progress messages
If xdr_guestfs_progress fails to decode the progress message, don't generate an event callback. Closes: https://github.com/libguestfs/libguestfs/pull/329
This commit is contained in:
12
lib/proto.c
12
lib/proto.c
@@ -219,16 +219,18 @@ check_daemon_socket (guestfs_h *g)
|
||||
/* Read and process progress messages that happen during FileIn. */
|
||||
if (flag == GUESTFS_PROGRESS_FLAG) {
|
||||
char mbuf[PROGRESS_MESSAGE_SIZE];
|
||||
guestfs_progress message;
|
||||
guestfs_progress message = { 0 };
|
||||
|
||||
n = g->conn->ops->read_data (g, g->conn, mbuf, PROGRESS_MESSAGE_SIZE);
|
||||
if (n <= 0) /* 0 or -1 */
|
||||
return n;
|
||||
|
||||
xdrmem_create (&xdr, mbuf, PROGRESS_MESSAGE_SIZE, XDR_DECODE);
|
||||
xdr_guestfs_progress (&xdr, &message);
|
||||
if (!xdr_guestfs_progress (&xdr, &message))
|
||||
message.proc = 0;
|
||||
xdr_destroy (&xdr);
|
||||
|
||||
if (message.proc)
|
||||
guestfs_int_progress_message_callback (g, &message);
|
||||
|
||||
goto again;
|
||||
@@ -625,13 +627,15 @@ guestfs_int_recv_from_daemon (guestfs_h *g, uint32_t *size_rtn, void **buf_rtn)
|
||||
return -1;
|
||||
|
||||
if (*size_rtn == GUESTFS_PROGRESS_FLAG) {
|
||||
guestfs_progress message;
|
||||
guestfs_progress message = { 0 };
|
||||
XDR xdr;
|
||||
|
||||
xdrmem_create (&xdr, *buf_rtn, PROGRESS_MESSAGE_SIZE, XDR_DECODE);
|
||||
xdr_guestfs_progress (&xdr, &message);
|
||||
if (!xdr_guestfs_progress (&xdr, &message))
|
||||
message.proc = 0;
|
||||
xdr_destroy (&xdr);
|
||||
|
||||
if (message.proc)
|
||||
guestfs_int_progress_message_callback (g, &message);
|
||||
|
||||
free (*buf_rtn);
|
||||
|
||||
Reference in New Issue
Block a user