Build in the behavior to ignore decodeUTF8 errors

Makes the code clearer and more explicit in intent.
pull/36/head
Samuel Mannehed 6 years ago committed by Lauri Kasanen
parent c3ef9ff557
commit ce94d92e18

@ -1288,11 +1288,7 @@ export default class RFB extends EventTargetMixin {
const name_length = this._sock.rQshift32();
if (this._sock.rQwait('server init name', name_length, 24)) { return false; }
let name = this._sock.rQshiftStr(name_length);
try {
name = decodeUTF8(name);
} catch (e) {
// bypass no-empty
}
name = decodeUTF8(name, true);
if (this._rfb_tightvnc) {
if (this._sock.rQwait('TightVNC extended server init header', 8, 24 + name_length)) { return false; }
@ -1912,11 +1908,7 @@ export default class RFB extends EventTargetMixin {
}
let name = this._sock.rQshiftStr(length);
try {
name = decodeUTF8(name);
} catch (e) {
// bypass no-empty
}
name = decodeUTF8(name, true);
this._setDesktopName(name);

@ -7,8 +7,19 @@
*/
// Decode from UTF-8
export function decodeUTF8(utf8string) {
export function decodeUTF8(utf8string, allowLatin1=false) {
try {
return decodeURIComponent(escape(utf8string));
} catch (e) {
if (e instanceof URIError) {
if (allowLatin1) {
// If we allow Latin1 we can ignore any decoding fails
// and in these cases return the original string
return utf8string;
}
}
throw e;
}
}
// Encode to UTF-8

Loading…
Cancel
Save