diff --git a/src/domain/android/androidAnalysis.ts b/src/domain/android/androidAnalysis.ts index e15ce2ec68..2e7be99b49 100644 --- a/src/domain/android/androidAnalysis.ts +++ b/src/domain/android/androidAnalysis.ts @@ -187,8 +187,11 @@ export const dexStaticValueSchema = z.discriminatedUnion("type", [ type: z.literal("long"), value: z .string() - .regex(/^(?:0|-?[1-9]\d*)$/u) - .refine((text) => BigInt(text) >= LONG_MIN && BigInt(text) <= LONG_MAX), + .regex(/^(?:0|-?[1-9]\d*)$/u, { abort: true }) + .refine((text) => { + const value = BigInt(text); + return value >= LONG_MIN && value <= LONG_MAX; + }), }), floating("float", Math.fround), floating("double", (value) => value), diff --git a/tests/boundary/android/JadxAnalysis.test.ts b/tests/boundary/android/JadxAnalysis.test.ts index c83b90b63a..1fb29abcf2 100644 --- a/tests/boundary/android/JadxAnalysis.test.ts +++ b/tests/boundary/android/JadxAnalysis.test.ts @@ -536,6 +536,7 @@ it("reports DEX static values of static final fields without a static initialize it.each([ { type: "long", value: -9223372036854775808 }, + { type: "long", value: "1.5" }, { type: "int", value: "1024" }, { type: "double", value: 0.5 }, { type: "enum", value: "fixture.Mode.ON" }, @@ -553,7 +554,13 @@ it.each([ dex_static_value, }, ]), - ).rejects.toThrow("JADX class summary failed or was malformed"); + ).rejects.toMatchObject({ + _tag: "AnalysisOutputError", + operation: "inspect_android_class", + message: expect.stringContaining( + "JADX class summary failed or was malformed", + ), + }); }, );