Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a3176ff7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use package name, pid, uid to check permission of capturing hotword."

parents 69d6cf3e 68e0df70
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -33,10 +33,12 @@ public:

    DECLARE_META_INTERFACE(SoundTriggerHwService);

    virtual status_t listModules(struct sound_trigger_module_descriptor *modules,
    virtual status_t listModules(const String16& opPackageName,
                                 struct sound_trigger_module_descriptor *modules,
                                 uint32_t *numModules) = 0;

    virtual status_t attach(const sound_trigger_module_handle_t handle,
    virtual status_t attach(const String16& opPackageName,
                            const sound_trigger_module_handle_t handle,
                            const sp<ISoundTriggerClient>& client,
                            sp<ISoundTrigger>& module) = 0;

+5 −3
Original line number Diff line number Diff line
@@ -36,9 +36,11 @@ public:

    virtual ~SoundTrigger();

    static  status_t listModules(struct sound_trigger_module_descriptor *modules,
    static  status_t listModules(const String16& opPackageName,
                                 struct sound_trigger_module_descriptor *modules,
                                 uint32_t *numModules);
    static  sp<SoundTrigger> attach(const sound_trigger_module_handle_t module,
    static  sp<SoundTrigger> attach(const String16& opPackageName,
                                    const sound_trigger_module_handle_t module,
                                    const sp<SoundTriggerCallback>& callback);

    static  status_t setCaptureState(bool active);
+3 −3
Original line number Diff line number Diff line
@@ -138,14 +138,14 @@ bool captureMediaOutputAllowed(pid_t pid, uid_t uid) {
    return ok;
}

bool captureHotwordAllowed(pid_t pid, uid_t uid) {
bool captureHotwordAllowed(const String16& opPackageName, pid_t pid, uid_t uid) {
    // CAPTURE_AUDIO_HOTWORD permission implies RECORD_AUDIO permission
    bool ok = recordingAllowed(String16(""), pid, uid);
    bool ok = recordingAllowed(opPackageName, pid, uid);

    if (ok) {
        static const String16 sCaptureHotwordAllowed("android.permission.CAPTURE_AUDIO_HOTWORD");
        // IMPORTANT: Use PermissionCache - not a runtime permission and may not change.
        ok = PermissionCache::checkCallingPermission(sCaptureHotwordAllowed);
        ok = PermissionCache::checkPermission(sCaptureHotwordAllowed, pid, uid);
    }
    if (!ok) ALOGE("android.permission.CAPTURE_AUDIO_HOTWORD");
    return ok;
+1 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ bool startRecording(const String16& opPackageName, pid_t pid, uid_t uid);
void finishRecording(const String16& opPackageName, uid_t uid);
bool captureAudioOutputAllowed(pid_t pid, uid_t uid);
bool captureMediaOutputAllowed(pid_t pid, uid_t uid);
bool captureHotwordAllowed(pid_t pid, uid_t uid);
bool captureHotwordAllowed(const String16& opPackageName, pid_t pid, uid_t uid);
bool settingsAllowed();
bool modifyAudioRoutingAllowed();
bool modifyDefaultAudioEffectsAllowed();
+1 −1
Original line number Diff line number Diff line
@@ -385,7 +385,7 @@ status_t AudioPolicyService::getInputForAttr(const audio_attributes_t *attr,
        return PERMISSION_DENIED;
    }

    bool canCaptureHotword = captureHotwordAllowed(pid, uid);
    bool canCaptureHotword = captureHotwordAllowed(opPackageName, pid, uid);
    if ((attr->source == AUDIO_SOURCE_HOTWORD) && !canCaptureHotword) {
        return BAD_VALUE;
    }
Loading