From f723e53e2bd0ea963b25e70cea0419bba972c79a Mon Sep 17 00:00:00 2001 From: Dakkshesh Date: Sun, 10 Aug 2025 09:39:32 +0530 Subject: [PATCH] java: CertHacker: Sanitize the XML data before passing to XML parser - Remove whitespaces - Remove Byte Order Mark (BOM) Fixes #12 Signed-off-by: Dakkshesh --- .../TrickyStoreOSS/CertificateHacker.kt | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/CertificateHacker.kt b/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/CertificateHacker.kt index afe7aa6..11e50bd 100644 --- a/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/CertificateHacker.kt +++ b/app/src/main/java/io/github/beakthoven/TrickyStoreOSS/CertificateHacker.kt @@ -229,10 +229,23 @@ object CertificateHacker { override fun hashCode(): Int = digest.contentHashCode() } - - + fun String.sanitizeXml(): String { + var content = this + val boms = listOf( + "\uFEFF", + "\uFFFE", + "\u0000\uFEFF" + ) + content = content.trimStart() + for (bom in boms) { + content = content.removePrefix(bom) + } + content = content.trimStart() + + return content.trimEnd() + } fun readFromXml(xmlData: String?) { keyboxes.clear() @@ -244,7 +257,7 @@ object CertificateHacker { } try { - val xmlParser = XmlParser(xmlData) + val xmlParser = XmlParser(xmlData.sanitizeXml()) val numberOfKeyboxesResult = xmlParser.obtainPath("AndroidAttestation.NumberOfKeyboxes") val numberOfKeyboxes = when (numberOfKeyboxesResult) {