From efc0fe6b85985c2437b17fcd2b0dcd14e71a59b8 Mon Sep 17 00:00:00 2001 From: Oskar Eichler <62393985+OskarEichler@users.noreply.github.com> Date: Fri, 28 Aug 2026 10:11:15 +0300 Subject: [PATCH 1/2] fix(android): reject invalid manifest XML before parsing --- packages/cli-config-android/src/config/getMainActivity.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli-config-android/src/config/getMainActivity.ts b/packages/cli-config-android/src/config/getMainActivity.ts index 702452382..cf6c0db9c 100644 --- a/packages/cli-config-android/src/config/getMainActivity.ts +++ b/packages/cli-config-android/src/config/getMainActivity.ts @@ -26,7 +26,7 @@ export default function getMainActivity(manifestPath: string): string | null { const xmlParser = new XMLParser({ignoreAttributes: false}); const manifestContent = fs.readFileSync(manifestPath, {encoding: 'utf8'}); - if (XMLValidator.validate(manifestContent)) { + if (XMLValidator.validate(manifestContent) === true) { const {manifest} = xmlParser.parse(manifestContent); const application = manifest.application || {}; From bc377af5de71c68c36bf9ad6e3ea4660344ffb34 Mon Sep 17 00:00:00 2001 From: Oskar Eichler Date: Sun, 30 Aug 2026 16:45:50 +0700 Subject: [PATCH 2/2] test(android): cover invalid manifest XML --- .../files/AndroidManifest-few-activities.xml | 1 - .../src/config/__tests__/getMainActivity.test.ts | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/cli-config-android/src/config/__fixtures__/files/AndroidManifest-few-activities.xml b/packages/cli-config-android/src/config/__fixtures__/files/AndroidManifest-few-activities.xml index 5498f5608..bc87b67ca 100644 --- a/packages/cli-config-android/src/config/__fixtures__/files/AndroidManifest-few-activities.xml +++ b/packages/cli-config-android/src/config/__fixtures__/files/AndroidManifest-few-activities.xml @@ -16,5 +16,4 @@ - diff --git a/packages/cli-config-android/src/config/__tests__/getMainActivity.test.ts b/packages/cli-config-android/src/config/__tests__/getMainActivity.test.ts index a1acfed78..08fdf766f 100644 --- a/packages/cli-config-android/src/config/__tests__/getMainActivity.test.ts +++ b/packages/cli-config-android/src/config/__tests__/getMainActivity.test.ts @@ -31,6 +31,15 @@ describe('android::getMainActivity', () => { app: mocks.customFlavor, }, }, + invalid: { + android: { + app: { + src: { + 'AndroidManifest.xml': '', + }, + }, + }, + }, }); }); @@ -70,4 +79,9 @@ describe('android::getMainActivity', () => { const fakeManifestPath = findManifest('/empty'); expect(getMainActivity(fakeManifestPath || '')).toBeNull(); }); + + it('returns null if the manifest XML is invalid', () => { + const manifestPath = findManifest('/invalid'); + expect(getMainActivity(manifestPath || '')).toBeNull(); + }); });