mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
ui: fix handling of NULL SASL server data
The code is supposed to distinguish between SASL server data that is NULL, vs non-NULL but zero-length. It was incorrectly checking the 'serveroutlen' variable, rather than 'serverout' though, so failing to distinguish the cases. Fortunately we can fix this without breaking compatibility with clients, as clients already know how to decode the input data correctly. Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
+6
-4
@@ -289,9 +289,10 @@ static int protocol_client_auth_sasl_step(VncState *vs, uint8_t *data, size_t le
|
||||
goto authabort;
|
||||
}
|
||||
|
||||
if (serveroutlen) {
|
||||
if (serverout) {
|
||||
vnc_write_u32(vs, serveroutlen + 1);
|
||||
vnc_write(vs, serverout, serveroutlen + 1);
|
||||
vnc_write(vs, serverout, serveroutlen);
|
||||
vnc_write_u8(vs, '\0');
|
||||
} else {
|
||||
vnc_write_u32(vs, 0);
|
||||
}
|
||||
@@ -410,9 +411,10 @@ static int protocol_client_auth_sasl_start(VncState *vs, uint8_t *data, size_t l
|
||||
goto authabort;
|
||||
}
|
||||
|
||||
if (serveroutlen) {
|
||||
if (serverout) {
|
||||
vnc_write_u32(vs, serveroutlen + 1);
|
||||
vnc_write(vs, serverout, serveroutlen + 1);
|
||||
vnc_write(vs, serverout, serveroutlen);
|
||||
vnc_write_u8(vs, '\0');
|
||||
} else {
|
||||
vnc_write_u32(vs, 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user