Description
While creating an Activity
that extends MeetingActivity
, in the super.onCreate()
call there is a resource leak that is detected by Android’s StrictMode
that has detectLeakedClosableObjects()
enabled.
It appears there is a resource leak within us.zoom.androidlib.utils.ZmRomUtils.getSystemProperty
where there is a FileInputStream that is opened but never closed.
Which Android Meeting SDK version?
zoom-sdk-android-5.7.6.1918
Screenshots
Decompiled us.zoom.androidlib.utils.ZmRomUtils class
public static String getSystemProperty(String key, String defValue) {
if (key == null) {
return defValue;
} else {
Properties properties = new Properties();
try {
properties.load(new FileInputStream(new File(Environment.getRootDirectory(), "build.prop")));
return properties.getProperty(key, defValue);
} catch (Exception var4) {
ZMLog.e("ZmRomUtils", var4, "getSystemProperty exception, key=%s", new Object[]{key});
return defValue;
}
}
}
Example Error stacktrace:
2021-10-22 10:59:47.978 14278-14290/com.my.app E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
at dalvik.system.CloseGuard.open(CloseGuard.java:180)
at java.io.FileInputStream.<init>(FileInputStream.java:147)
at us.zoom.androidlib.utils.ZmRomUtils.getSystemProperty(ZmRomUtils.java:93)
at us.zoom.androidlib.utils.ZmRomUtils.getMIUIVersionCode(ZmRomUtils.java:74)
at us.zoom.androidlib.utils.ZmRomUtils.isImmersedModeSupported(ZmRomUtils.java:61)
at com.zipow.videobox.ConfActivity.isImmersedModeEnabled(ConfActivity.java:1)
at us.zoom.sdk.MeetingActivity.isImmersedModeEnabled(MeetingActivity.java:1)
at com.zipow.videobox.ConfActivityNormal.onCreate(ConfActivityNormal.java:9)
at us.zoom.sdk.MeetingActivity.onCreate(MeetingActivity.java:1)
at com.my.app.activities.MyMeetingActivity.onCreate(MyMeetingActivity.java:18)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)