Correctly handle "none" auth on old servers

There is no security result for the "none" authentication until RFB 3.8.
This got broken by mistake in 5671072.
This commit is contained in:
Pierre Ossman 2023-09-07 14:38:04 +02:00
parent e81602d705
commit 72f6810797
2 changed files with 22 additions and 3 deletions

View File

@ -1925,7 +1925,11 @@ export default class RFB extends EventTargetMixin {
_negotiateAuthentication() {
switch (this._rfbAuthScheme) {
case securityTypeNone:
if (this._rfbVersion >= 3.8) {
this._rfbInitState = 'SecurityResult';
} else {
this._rfbInitState = 'ClientInitialisation';
}
return true;
case securityTypeXVP:

View File

@ -1257,6 +1257,14 @@ describe('Remote Frame Buffer Protocol Client', function () {
client._sock._websocket._receiveData(new Uint8Array([0, 0, 0, 1]));
expect(client._rfbInitState).to.equal('ServerInitialisation');
});
it('should transition straight to ServerInitialisation on "no auth" for versions < 3.8', function () {
sendVer('003.007\n', client);
client._sock._websocket._getSentData();
sendSecurity(1, client);
expect(client._rfbInitState).to.equal('ServerInitialisation');
});
});
describe('Authentication', function () {
@ -2231,10 +2239,17 @@ describe('Remote Frame Buffer Protocol Client', function () {
describe('Legacy SecurityResult', function () {
beforeEach(function () {
client.addEventListener("credentialsrequired", () => {
client.sendCredentials({ password: 'passwd' });
});
sendVer('003.007\n', client);
client._sock._websocket._getSentData();
sendSecurity(1, client);
sendSecurity(2, client);
const challenge = [];
for (let i = 0; i < 16; i++) { challenge[i] = i; }
client._sock._websocket._receiveData(new Uint8Array(challenge));
client._sock._websocket._getSentData();
clock.tick();
});
it('should not include reason in securityfailure event', function () {