From fc06f65914dddd2c0a29e9f5fd4be960602f9128 Mon Sep 17 00:00:00 2001 From: "sai.shwethas" Date: Wed, 12 Apr 2023 15:58:12 +0530 Subject: Fix warnings from static analysis tool. 1.CALL_SUPER: SecureElementService.java: onCreate(),onDestroy() Call super class implementation. 2.GUARDED_BY_VIOLATION: Terminal.java: reset() Hold lock before accessing "mSEHal12" and "mAidlHal". Bug: 275291562 Test: Build ok, Manual test CTS SE tests Change-Id: Ic227266fe768dd579483e5632f62cf1b41c1e7e4 --- src/com/android/se/SecureElementService.java | 2 ++ src/com/android/se/Terminal.java | 38 +++++++++++++++------------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/com/android/se/SecureElementService.java b/src/com/android/se/SecureElementService.java index 6286228..47d3103 100644 --- a/src/com/android/se/SecureElementService.java +++ b/src/com/android/se/SecureElementService.java @@ -207,6 +207,7 @@ public final class SecureElementService extends Service { @Override public void onCreate() { + super.onCreate(); Log.i(mTag, Thread.currentThread().getName() + " onCreate"); initialize(); createTerminals(); @@ -229,6 +230,7 @@ public final class SecureElementService extends Service { * close all the channels. */ public void onDestroy() { + super.onDestroy(); Log.i(mTag, "onDestroy"); for (Terminal terminal : mTerminals.values()) { terminal.closeChannels(); diff --git a/src/com/android/se/Terminal.java b/src/com/android/se/Terminal.java index cc4c717..aba77bb 100644 --- a/src/com/android/se/Terminal.java +++ b/src/com/android/se/Terminal.java @@ -892,30 +892,32 @@ public class Terminal { * Reset the Secure Element. Return true if success, false otherwise. */ public boolean reset() { - if (mSEHal12 == null && mAidlHal == null) { - return false; - } - mContext.enforceCallingOrSelfPermission( + synchronized (mLock) { + if (mSEHal12 == null && mAidlHal == null) { + return false; + } + mContext.enforceCallingOrSelfPermission( android.Manifest.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION, "Need SECURE_ELEMENT_PRIVILEGED_OPERATION permission"); - try { - if (mAidlHal != null) { - mAidlHal.reset(); - return true; - } else { - byte status = mSEHal12.reset(); - // Successfully trigger reset. HAL service should send onStateChange - // after secure element reset and initialization process complete - if (status == SecureElementStatus.SUCCESS) { + try { + if (mAidlHal != null) { + mAidlHal.reset(); return true; + } else { + byte status = mSEHal12.reset(); + // Successfully trigger reset. HAL service should send onStateChange + // after secure element reset and initialization process complete + if (status == SecureElementStatus.SUCCESS) { + return true; + } + Log.e(mTag, "Error resetting terminal " + mName); } - Log.e(mTag, "Error resetting terminal " + mName); + } catch (ServiceSpecificException e) { + Log.e(mTag, "Exception in reset()" + e); + } catch (RemoteException e) { + Log.e(mTag, "Exception in reset()" + e); } - } catch (ServiceSpecificException e) { - Log.e(mTag, "Exception in reset()" + e); - } catch (RemoteException e) { - Log.e(mTag, "Exception in reset()" + e); } return false; } -- cgit v1.2.3