From 122ff5f7f4b72546fad471d44e3863e0c725819f Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Sat, 17 Feb 2024 21:25:25 +0100 Subject: [PATCH] Fossil/Skagen Hybrids: Fix crash on multi-byte unicode characters in menu The FosslAppWriter was writing string length instead of the bytes length into the wapp file, causing a crash when reading the file. Fixes #3577 --- .../gadgetbridge/devices/qhybrid/FossilAppWriter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/FossilAppWriter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/FossilAppWriter.java index a30128e00..c0c2b40bb 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/FossilAppWriter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/FossilAppWriter.java @@ -146,7 +146,7 @@ public class FossilAppWriter { for (String filename : stringsMap.keySet()) { output.write((byte)filename.length() + 1); output.write(StringUtils.terminateNull(filename).getBytes(StandardCharsets.UTF_8)); - output.write(shortToLEBytes((short)(stringsMap.get(filename).length() + 1))); + output.write(shortToLEBytes((short)(stringsMap.get(filename).getBytes(StandardCharsets.UTF_8).length + 1))); output.write(StringUtils.terminateNull(stringsMap.get(filename)).getBytes(StandardCharsets.UTF_8)); } return output.toByteArray();