From 83e67a66dec61cd195e6845df4a78b2437e281f6 Mon Sep 17 00:00:00 2001 From: Arnab Banerjee <a1.banerjee@samsung.corp-partner.google.com> Date: Fri, 17 May 2024 18:06:45 +0530 Subject: [PATCH] Fix TypedArray instance leak in ParsingPackageUtils. TypedArray instance was not closed after creation due to recycle method not being invoked. Added recycle call. Bug: 337976070 FIXES: 337976070 Change-Id: I222e33209e6b66f344e24ae1ca232ca7312da087 --- .../pm/pkg/parsing/ParsingPackageUtils.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java index 9fc7ddb57847..0e5049e97711 100644 --- a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java +++ b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java @@ -1911,12 +1911,16 @@ public class ParsingPackageUtils { } else if (parser.getName().equals("package")) { final TypedArray sa = res.obtainAttributes(parser, R.styleable.AndroidManifestQueriesPackage); - final String packageName = sa.getNonConfigurationString( - R.styleable.AndroidManifestQueriesPackage_name, 0); - if (TextUtils.isEmpty(packageName)) { - return input.error("Package name is missing from package tag."); + try { + final String packageName = sa.getNonConfigurationString( + R.styleable.AndroidManifestQueriesPackage_name, 0); + if (TextUtils.isEmpty(packageName)) { + return input.error("Package name is missing from package tag."); + } + pkg.addQueriesPackage(packageName.intern()); + } finally { + sa.recycle(); } - pkg.addQueriesPackage(packageName.intern()); } else if (parser.getName().equals("provider")) { final TypedArray sa = res.obtainAttributes(parser, R.styleable.AndroidManifestQueriesProvider); -- GitLab