screen: reject unsupported security types with clear error instead of mishandling
This commit is contained in:
parent
86e4f41203
commit
76061eb3ae
1 changed files with 9 additions and 3 deletions
|
|
@ -221,12 +221,18 @@ canvas { display: block; cursor: default; }
|
||||||
if (types.indexOf(1) !== -1) prefer = 1; // plain None
|
if (types.indexOf(1) !== -1) prefer = 1; // plain None
|
||||||
else if (types.indexOf(19) !== -1) prefer = 19; // VeNCrypt
|
else if (types.indexOf(19) !== -1) prefer = 19; // VeNCrypt
|
||||||
else prefer = types[0];
|
else prefer = types[0];
|
||||||
|
// Only handle known-safe types; reject everything else.
|
||||||
|
if (prefer !== 1 && prefer !== 19) {
|
||||||
|
dbg('no supported security type in [' + Array.from(types).join(', ') + '] — need 1 (None) or 19 (VeNCrypt)', 'err');
|
||||||
|
setStatus('unsupported security types: [' + Array.from(types).join(', ') + ']', 'error');
|
||||||
|
ws.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
dbg('→ choosing security type ' + prefer +
|
dbg('→ choosing security type ' + prefer +
|
||||||
(prefer === 1 ? ' (None)' : prefer === 19 ? ' (VeNCrypt)' : prefer === 2 ? ' (VncAuth)' : ''));
|
(prefer === 1 ? ' (None)' : ' (VeNCrypt)'));
|
||||||
send(new Uint8Array([prefer]));
|
send(new Uint8Array([prefer]));
|
||||||
if (prefer === 1) state = 'security-result';
|
if (prefer === 1) state = 'security-result';
|
||||||
else if (prefer === 19) state = 'vencrypt-version';
|
else state = 'vencrypt-version';
|
||||||
else state = 'security-vnc-challenge';
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case 'security-vnc-challenge': {
|
case 'security-vnc-challenge': {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue