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

Commit 09d8b70c authored by Brint E. Kriebel's avatar Brint E. Kriebel
Browse files

Merge remote-tracking branch 'github/cm-11.0' into HEAD

parents 0228c084 de7e5180
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -495,7 +495,7 @@ const char *dump_traces() {
        if (!mkdir(anr_traces_dir, 0775)) {
            chown(anr_traces_dir, AID_SYSTEM, AID_SYSTEM);
            chmod(anr_traces_dir, 0775);
            if (selinux_android_restorecon(anr_traces_dir) == -1) {
            if (selinux_android_restorecon(anr_traces_dir, 0) == -1) {
                fprintf(stderr, "restorecon failed for %s: %s\n", anr_traces_dir, strerror(errno));
            }
        } else if (errno != EEXIST) {
+32 −3
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ int install(const char *pkgname, uid_t uid, gid_t gid, const char *seinfo)
        return -1;
    }

    if (selinux_android_setfilecon2(pkgdir, pkgname, seinfo, uid) < 0) {
    if (selinux_android_setfilecon(pkgdir, pkgname, seinfo, uid) < 0) {
        ALOGE("cannot setfilecon dir '%s': %s\n", pkgdir, strerror(errno));
        unlink(libsymlink);
        unlink(pkgdir);
@@ -185,7 +185,7 @@ int delete_user_data(const char *pkgname, userid_t userid)
    return delete_dir_contents(pkgdir, 0, "lib");
}

int make_user_data(const char *pkgname, uid_t uid, userid_t userid)
int make_user_data(const char *pkgname, uid_t uid, userid_t userid, const char* seinfo)
{
    char pkgdir[PKG_PATH_MAX];
    char applibdir[PKG_PATH_MAX];
@@ -246,7 +246,7 @@ int make_user_data(const char *pkgname, uid_t uid, userid_t userid)
        return -1;
    }

    if (selinux_android_setfilecon(pkgdir, pkgname, uid) < 0) {
    if (selinux_android_setfilecon(pkgdir, pkgname, seinfo, uid) < 0) {
        ALOGE("cannot setfilecon dir '%s': %s\n", pkgdir, strerror(errno));
        unlink(libsymlink);
        unlink(pkgdir);
@@ -1113,3 +1113,32 @@ out:

    return rc;
}

int restorecon_data()
{
    char *data_dir = build_string2(android_data_dir.path, PRIMARY_USER_PREFIX);
    char *user_dir = build_string2(android_data_dir.path, SECONDARY_USER_PREFIX);

    unsigned int flags = SELINUX_ANDROID_RESTORECON_RECURSE |
            SELINUX_ANDROID_RESTORECON_DATADATA;

    int ret = 0;

    if (!data_dir || !user_dir) {
        return -1;
    }

    if (selinux_android_restorecon(data_dir, flags) < 0) {
        ALOGE("restorecon failed for %s: %s\n", data_dir, strerror(errno));
        ret |= -1;
    }

    if (selinux_android_restorecon(user_dir, flags) < 0) {
        ALOGE("restorecon failed for %s: %s\n", user_dir, strerror(errno));
        ret |= -1;
    }

    free(data_dir);
    free(user_dir);
    return ret;
}
+14 −2
Original line number Diff line number Diff line
@@ -103,7 +103,8 @@ static int do_rm_user_data(char **arg, char reply[REPLY_MAX])

static int do_mk_user_data(char **arg, char reply[REPLY_MAX])
{
    return make_user_data(arg[0], atoi(arg[1]), atoi(arg[2])); /* pkgname, uid, userid */
    return make_user_data(arg[0], atoi(arg[1]), atoi(arg[2]), arg[3]);
                             /* pkgname, uid, userid, seinfo */
}

static int do_rm_user(char **arg, char reply[REPLY_MAX])
@@ -121,6 +122,12 @@ static int do_linklib(char **arg, char reply[REPLY_MAX])
    return linklib(arg[0], arg[1], atoi(arg[2]));
}

static int do_restorecon_data(char **arg __attribute__((unused)),
    char reply[REPLY_MAX] __attribute__((unused)))
{
    return restorecon_data();
}

struct cmdinfo {
    const char *name;
    unsigned numargs;
@@ -142,8 +149,9 @@ struct cmdinfo cmds[] = {
    { "rmuserdata",           2, do_rm_user_data },
    { "movefiles",            0, do_movefiles },
    { "linklib",              3, do_linklib },
    { "mkuserdata",           3, do_mk_user_data },
    { "mkuserdata",           4, do_mk_user_data },
    { "rmuser",               1, do_rm_user },
    { "restorecondata",       0, do_restorecon_data },
};

char write_error = 0;
@@ -440,6 +448,10 @@ int initialize_directories() {
            goto fail;
        }

        if (selinux_android_restorecon(android_media_dir.path, 0)) {
            goto fail;
        }

        // /data/media/0
        char owner_media_dir[PATH_MAX];
        snprintf(owner_media_dir, PATH_MAX, "%s0", android_media_dir.path);
+2 −1
Original line number Diff line number Diff line
@@ -208,7 +208,7 @@ int uninstall(const char *pkgname, userid_t userid);
int renamepkg(const char *oldpkgname, const char *newpkgname);
int fix_uid(const char *pkgname, uid_t uid, gid_t gid);
int delete_user_data(const char *pkgname, userid_t userid);
int make_user_data(const char *pkgname, uid_t uid, userid_t userid);
int make_user_data(const char *pkgname, uid_t uid, userid_t userid, const char* seinfo);
int delete_user(userid_t userid);
int delete_cache(const char *pkgname, userid_t userid);
int move_dex(const char *src, const char *dst);
@@ -221,3 +221,4 @@ int free_cache(int64_t free_size);
int dexopt(const char *apk_path, uid_t uid, int is_public);
int movefiles();
int linklib(const char* target, const char* source, int userId);
int restorecon_data();
+11 −1
Original line number Diff line number Diff line
@@ -192,7 +192,8 @@ HWComposer::HWComposer(
      mCBContext(new cb_context),
      mEventHandler(handler),
      mDebugForceFakeVSync(false),
      mSwapRectOn(false)
      mSwapRectOn(false),
      mVDSEnabled(false)
{
    for (size_t i =0 ; i<MAX_HWC_DISPLAYS ; i++) {
        mLists[i] = 0;
@@ -310,6 +311,15 @@ HWComposer::HWComposer(
        }
    }

    // read system property for VDS solution
    // This property is expected to be setup once during bootup
    if( (property_get("persist.hwc.enable_vds", value, NULL) > 0) &&
        ((!strncmp(value, "1", strlen("1"))) ||
        !strncasecmp(value, "true", strlen("true")))) {
        //HAL virtual display is using VDS based implementation
        mVDSEnabled = true;
    }

    if (needVSyncThread) {
        // we don't have VSYNC support, we need to fake it
        mVSyncThread = new VSyncThread(*this);
Loading