|
|
9ae3a8 |
From 1bf158dc510fc63f11725f2350369d06a3fff929 Mon Sep 17 00:00:00 2001
|
|
|
9ae3a8 |
From: "Daniel P. Berrange" <berrange@redhat.com>
|
|
|
9ae3a8 |
Date: Thu, 8 Feb 2018 17:50:40 +0100
|
|
|
9ae3a8 |
Subject: [PATCH 26/27] ui: correctly advance output buffer when writing SASL
|
|
|
9ae3a8 |
data
|
|
|
9ae3a8 |
MIME-Version: 1.0
|
|
|
9ae3a8 |
Content-Type: text/plain; charset=UTF-8
|
|
|
9ae3a8 |
Content-Transfer-Encoding: 8bit
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
RH-Author: Daniel P. Berrange <berrange@redhat.com>
|
|
|
9ae3a8 |
Message-id: <20180208175041.5634-27-berrange@redhat.com>
|
|
|
9ae3a8 |
Patchwork-id: 78955
|
|
|
9ae3a8 |
O-Subject: [RHEL-7.5 qemu-kvm PATCH v1 26/27] ui: correctly advance output buffer when writing SASL data
|
|
|
9ae3a8 |
Bugzilla: 1527405
|
|
|
9ae3a8 |
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
|
9ae3a8 |
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
In this previous commit:
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
commit 8f61f1c5a6bc06438a1172efa80bc7606594fa07
|
|
|
9ae3a8 |
Author: Daniel P. Berrange <berrange@redhat.com>
|
|
|
9ae3a8 |
Date: Mon Dec 18 19:12:20 2017 +0000
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
ui: track how much decoded data we consumed when doing SASL encoding
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
I attempted to fix a flaw with tracking how much data had actually been
|
|
|
9ae3a8 |
processed when encoding with SASL. With that flaw, the VNC server could
|
|
|
9ae3a8 |
mistakenly discard queued data that had not been sent.
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
The fix was not quite right though, because it merely decremented the
|
|
|
9ae3a8 |
vs->output.offset value. This is effectively discarding data from the
|
|
|
9ae3a8 |
end of the pending output buffer. We actually need to discard data from
|
|
|
9ae3a8 |
the start of the pending output buffer. We also want to free memory that
|
|
|
9ae3a8 |
is no longer required. The correct way to handle this is to use the
|
|
|
9ae3a8 |
buffer_advance() helper method instead of directly manipulating the
|
|
|
9ae3a8 |
offset value.
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
Reported-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
9ae3a8 |
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
|
|
9ae3a8 |
Reviewed-by: Eric Blake <eblake@redhat.com>
|
|
|
9ae3a8 |
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
|
|
|
9ae3a8 |
Message-id: 20180201155841.27509-1-berrange@redhat.com
|
|
|
9ae3a8 |
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
|
9ae3a8 |
(cherry picked from commit 627ebec208a8809818589e17f4fce55a59420ad2)
|
|
|
9ae3a8 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
9ae3a8 |
---
|
|
|
9ae3a8 |
ui/vnc-auth-sasl.c | 2 +-
|
|
|
9ae3a8 |
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
9ae3a8 |
|
|
|
9ae3a8 |
diff --git a/ui/vnc-auth-sasl.c b/ui/vnc-auth-sasl.c
|
|
|
9ae3a8 |
index 8188081..c39f588 100644
|
|
|
9ae3a8 |
--- a/ui/vnc-auth-sasl.c
|
|
|
9ae3a8 |
+++ b/ui/vnc-auth-sasl.c
|
|
|
9ae3a8 |
@@ -81,7 +81,7 @@ long vnc_client_write_sasl(VncState *vs)
|
|
|
9ae3a8 |
} else {
|
|
|
9ae3a8 |
vs->force_update_offset -= vs->sasl.encodedRawLength;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
- vs->output.offset -= vs->sasl.encodedRawLength;
|
|
|
9ae3a8 |
+ buffer_advance(&vs->output, vs->sasl.encodedRawLength);
|
|
|
9ae3a8 |
vs->sasl.encoded = NULL;
|
|
|
9ae3a8 |
vs->sasl.encodedOffset = vs->sasl.encodedLength = 0;
|
|
|
9ae3a8 |
}
|
|
|
9ae3a8 |
--
|
|
|
9ae3a8 |
1.8.3.1
|
|
|
9ae3a8 |
|