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

Commit a229d3e2 authored by Jayant Chowdhary's avatar Jayant Chowdhary
Browse files

Special case init for android_is_in_vendor_process.



Init is executed without ld.config.<ver>.txt loaded (since sysprop
service isn't up in order for it to read ro.vndk.version and know <ver>). It uses the hard-coded
namespaces in the linker and therefore, does not know about the vndk namespace. That does not mean
it is not a system process.

Bug: 124128212

Test: Boot up device with selinux enforced, use camera to take pictures/ record videos (sanity)
Test: Watch movies on youtube (sanity)

Change-Id: If8701af2ee5dfa3bb36d0ce0a17a23808d184d9f
Signed-off-by: default avatarJayant Chowdhary <jchowdhary@google.com>
parent d458066b
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -20,6 +20,8 @@


#define LOG_TAG "vndksupport"
#define LOG_TAG "vndksupport"
#include <log/log.h>
#include <log/log.h>
#include <sys/types.h>
#include <unistd.h>


__attribute__((weak)) extern struct android_namespace_t* android_get_exported_namespace(const char*);
__attribute__((weak)) extern struct android_namespace_t* android_get_exported_namespace(const char*);
__attribute__((weak)) extern void* android_dlopen_ext(const char*, int, const android_dlextinfo*);
__attribute__((weak)) extern void* android_dlopen_ext(const char*, int, const android_dlextinfo*);
@@ -46,6 +48,11 @@ static struct android_namespace_t* get_vendor_namespace() {
}
}


int android_is_in_vendor_process() {
int android_is_in_vendor_process() {
    // Special case init, since when init runs, ld.config.<ver>.txt hasn't been
    // loaded (sysprop service isn't up for init to know <ver>).
    if (getpid() == 1) {
        return 0;
    }
    if (android_get_exported_namespace == NULL) {
    if (android_get_exported_namespace == NULL) {
        ALOGD("android_get_exported_namespace() not available. Assuming system process.");
        ALOGD("android_get_exported_namespace() not available. Assuming system process.");
        return 0;
        return 0;