Merge "Reset identity context in STService" into udc-dev
diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java
index 1400886..70af337 100644
--- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java
+++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java
@@ -1647,13 +1647,16 @@
 
         @Override
         public List<ModuleProperties> listModuleProperties(Identity originatorIdentity) {
-            Identity identity = new Identity();
-            identity.packageName = ActivityThread.currentOpPackageName();
             ArrayList<ModuleProperties> moduleList = new ArrayList<>();
-            // Overwrite with our own identity to fix permission issues.
-            // VIMService always does its own validation, so this is fine.
-            // TODO(b/269765333)
-            SoundTrigger.listModulesAsOriginator(moduleList, identity);
+            try (SafeCloseable ignored = PermissionUtil.establishIdentityDirect(
+                    originatorIdentity)) {
+                Identity middlemanIdentity = new Identity();
+                middlemanIdentity.uid = Binder.getCallingUid();
+                middlemanIdentity.pid = Binder.getCallingPid();
+                middlemanIdentity.packageName = ActivityThread.currentOpPackageName();
+                SoundTrigger.listModulesAsMiddleman(moduleList, middlemanIdentity,
+                                                originatorIdentity);
+            }
             return moduleList;
         }