diff options
author | Hans de Goede <hdegoede@redhat.com> | 2011-04-01 10:34:24 +0200 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2011-04-01 11:13:50 +0200 |
commit | a19f51265c04bfa33eaa07f499eda35a55844a8b (patch) | |
tree | d3498982f3c132ecf0dc03c961b0d0441a9547c1 /server | |
parent | 7cc85f33be36eee3351618e53f9ba9fbc5ce7472 (diff) | |
download | spice-a19f51265c04bfa33eaa07f499eda35a55844a8b.tar.gz spice-a19f51265c04bfa33eaa07f499eda35a55844a8b.tar.xz spice-a19f51265c04bfa33eaa07f499eda35a55844a8b.zip |
server: break read_from_vdi_port loop if the guest gets disconnected
read_from_vdi_port calls dispatch_vdi_port data, which will disconnect
the guest agent if it sends invalid data. It would then try to read more
data from the disconnected guest agent resulting in a NULL ptr dereference,
this patch fixes this.
Diffstat (limited to 'server')
-rw-r--r-- | server/reds.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/server/reds.c b/server/reds.c index b286809e..088683b6 100644 --- a/server/reds.c +++ b/server/reds.c @@ -1292,7 +1292,7 @@ static int read_from_vdi_port(void) } sif = SPICE_CONTAINEROF(vdagent->base.sif, SpiceCharDeviceInterface, base); - while (!quit_loop) { + while (!quit_loop && vdagent) { switch (state->read_state) { case VDI_PORT_READ_STATE_READ_HADER: n = sif->read(vdagent, state->recive_pos, state->recive_len); |