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

Commit 1ec71365 authored by Oscar Montemayor's avatar Oscar Montemayor Committed by Android Git Automerger
Browse files

am f5f30067: Merge "DO NOT MERGE Removing unused features from source tree....

am f5f30067: Merge "DO NOT MERGE Removing unused features from source tree. Please refer to Bug#2502219." into froyo

Merge commit 'f5f30067' into froyo-plus-aosp

* commit 'f5f30067':
  DO NOT MERGE
parents 629d03f1 f5f30067
Loading
Loading
Loading
Loading
+25 −93
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

#include "installd.h"

int install(const char *pkgname, int encrypted_fs_flag, uid_t uid, gid_t gid)
int install(const char *pkgname, uid_t uid, gid_t gid)
{
    char pkgdir[PKG_PATH_MAX];
    char libdir[PKG_PATH_MAX];
@@ -27,17 +27,11 @@ int install(const char *pkgname, int encrypted_fs_flag, uid_t uid, gid_t gid)
        
    }

    if (encrypted_fs_flag == USE_UNENCRYPTED_FS) {
    if (create_pkg_path(pkgdir, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
        return -1;
    if (create_pkg_path(libdir, PKG_LIB_PREFIX, pkgname, PKG_LIB_POSTFIX))
        return -1;
    } else {
        if (create_pkg_path(pkgdir, PKG_SEC_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
            return -1;
        if (create_pkg_path(libdir, PKG_SEC_LIB_PREFIX, pkgname, PKG_LIB_POSTFIX))
            return -1;
    }


    if (mkdir(pkgdir, 0751) < 0) {
        LOGE("cannot create dir '%s': %s\n", pkgdir, strerror(errno));
@@ -62,38 +56,27 @@ int install(const char *pkgname, int encrypted_fs_flag, uid_t uid, gid_t gid)
    return 0;
}

int uninstall(const char *pkgname, int encrypted_fs_flag)
int uninstall(const char *pkgname)
{
    char pkgdir[PKG_PATH_MAX];

    if (encrypted_fs_flag == USE_UNENCRYPTED_FS) {
    if (create_pkg_path(pkgdir, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
        return -1;
    } else {
        if (create_pkg_path(pkgdir, PKG_SEC_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
            return -1;
    }

        /* delete contents AND directory, no exceptions */
    return delete_dir_contents(pkgdir, 1, 0);
}

int renamepkg(const char *oldpkgname, const char *newpkgname, int encrypted_fs_flag)
int renamepkg(const char *oldpkgname, const char *newpkgname)
{
    char oldpkgdir[PKG_PATH_MAX];
    char newpkgdir[PKG_PATH_MAX];

    if (encrypted_fs_flag == USE_UNENCRYPTED_FS) {
    if (create_pkg_path(oldpkgdir, PKG_DIR_PREFIX, oldpkgname, PKG_DIR_POSTFIX))
        return -1;
    if (create_pkg_path(newpkgdir, PKG_DIR_PREFIX, newpkgname, PKG_DIR_POSTFIX))
        return -1;
    } else {
        if (create_pkg_path(oldpkgdir, PKG_SEC_DIR_PREFIX, oldpkgname, PKG_DIR_POSTFIX))
            return -1;
        if (create_pkg_path(newpkgdir, PKG_SEC_DIR_PREFIX, newpkgname, PKG_DIR_POSTFIX))
            return -1;
    }


    if (rename(oldpkgdir, newpkgdir) < 0) {
        LOGE("cannot rename dir '%s' to '%s': %s\n", oldpkgdir, newpkgdir, strerror(errno));
@@ -102,41 +85,29 @@ int renamepkg(const char *oldpkgname, const char *newpkgname, int encrypted_fs_f
    return 0;
}

int delete_user_data(const char *pkgname, int encrypted_fs_flag)
int delete_user_data(const char *pkgname)
{
    char pkgdir[PKG_PATH_MAX];

    if (encrypted_fs_flag == USE_UNENCRYPTED_FS) {
    if (create_pkg_path(pkgdir, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
        return -1;
    } else {
        if (create_pkg_path(pkgdir, PKG_SEC_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX))
            return -1;
    }

        /* delete contents, excluding "lib", but not the directory itself */
    return delete_dir_contents(pkgdir, 0, "lib");
}

int delete_cache(const char *pkgname, int encrypted_fs_flag)
int delete_cache(const char *pkgname)
{
    char cachedir[PKG_PATH_MAX];

    if (encrypted_fs_flag == USE_UNENCRYPTED_FS) {
    if (create_pkg_path(cachedir, CACHE_DIR_PREFIX, pkgname, CACHE_DIR_POSTFIX))
        return -1;
    } else {
        if (create_pkg_path(cachedir, CACHE_SEC_DIR_PREFIX, pkgname, CACHE_DIR_POSTFIX))
            return -1;
    }


        /* delete contents, not the directory, no exceptions */
    return delete_dir_contents(cachedir, 0, 0);
}

/* TODO(oam): depending on use case (ecryptfs or dmcrypt)
 * change implementation
 */
static int disk_free()
{
    struct statfs sfs;
@@ -168,39 +139,6 @@ int free_cache(int free_size)
    LOGI("free_cache(%d) avail %d\n", free_size, avail);
    if (avail >= free_size) return 0;

    /* First try encrypted dir */
    d = opendir(PKG_SEC_DIR_PREFIX);
    if (d == NULL) {
        LOGE("cannot open %s\n", PKG_SEC_DIR_PREFIX);
    } else {
        dfd = dirfd(d);

        while ((de = readdir(d))) {
           if (de->d_type != DT_DIR) continue;
           name = de->d_name;

            /* always skip "." and ".." */
            if (name[0] == '.') {
                if (name[1] == 0) continue;
                if ((name[1] == '.') && (name[2] == 0)) continue;
            }

            subfd = openat(dfd, name, O_RDONLY | O_DIRECTORY);
            if (subfd < 0) continue;

            delete_dir_contents_fd(subfd, "cache");
            close(subfd);

            avail = disk_free();
            if (avail >= free_size) {
                closedir(d);
                return 0;
            }
        }
        closedir(d);
    }

    /* Next try unencrypted dir... */
    d = opendir(PKG_DIR_PREFIX);
    if (d == NULL) {
        LOGE("cannot open %s\n", PKG_DIR_PREFIX);
@@ -376,7 +314,7 @@ static int calculate_dir_size(int dfd)

int get_size(const char *pkgname, const char *apkpath,
             const char *fwdlock_apkpath,
             int *_codesize, int *_datasize, int *_cachesize, int encrypted_fs_flag)
             int *_codesize, int *_datasize, int *_cachesize)
{
    DIR *d;
    int dfd;
@@ -411,15 +349,9 @@ int get_size(const char *pkgname, const char *apkpath,
        }
    }

    if (encrypted_fs_flag == 0) {
    if (create_pkg_path(path, PKG_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX)) {
        goto done;
    }
    } else {
        if (create_pkg_path(path, PKG_SEC_DIR_PREFIX, pkgname, PKG_DIR_POSTFIX)) {
            goto done;
        }
    }

    d = opendir(path);
    if (d == NULL) {
+12 −12
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ static int do_ping(char **arg, char reply[REPLY_MAX])

static int do_install(char **arg, char reply[REPLY_MAX])
{
    return install(arg[0], atoi(arg[1]), atoi(arg[2]), atoi(arg[3])); /* pkgname, uid, gid */
    return install(arg[0], atoi(arg[1]), atoi(arg[2])); /* pkgname, uid, gid */
}

static int do_dexopt(char **arg, char reply[REPLY_MAX])
@@ -50,12 +50,12 @@ static int do_rm_dex(char **arg, char reply[REPLY_MAX])

static int do_remove(char **arg, char reply[REPLY_MAX])
{
    return uninstall(arg[0], atoi(arg[1])); /* pkgname */
    return uninstall(arg[0]); /* pkgname */
}

static int do_rename(char **arg, char reply[REPLY_MAX])
{
    return renamepkg(arg[0], arg[1], atoi(arg[2])); /* oldpkgname, newpkgname */
    return renamepkg(arg[0], arg[1]); /* oldpkgname, newpkgname */
}

static int do_free_cache(char **arg, char reply[REPLY_MAX]) /* TODO int:free_size */
@@ -65,7 +65,7 @@ static int do_free_cache(char **arg, char reply[REPLY_MAX]) /* TODO int:free_siz

static int do_rm_cache(char **arg, char reply[REPLY_MAX])
{
    return delete_cache(arg[0], atoi(arg[1])); /* pkgname */
    return delete_cache(arg[0]); /* pkgname */
}

static int do_protect(char **arg, char reply[REPLY_MAX])
@@ -81,7 +81,7 @@ static int do_get_size(char **arg, char reply[REPLY_MAX])
    int res = 0;

        /* pkgdir, apkpath */
    res = get_size(arg[0], arg[1], arg[2], &codesize, &datasize, &cachesize, atoi(arg[3]));
    res = get_size(arg[0], arg[1], arg[2], &codesize, &datasize, &cachesize);

    sprintf(reply,"%d %d %d", codesize, datasize, cachesize);
    return res;
@@ -89,7 +89,7 @@ static int do_get_size(char **arg, char reply[REPLY_MAX])

static int do_rm_user_data(char **arg, char reply[REPLY_MAX])
{
    return delete_user_data(arg[0], atoi(arg[1])); /* pkgname */
    return delete_user_data(arg[0]); /* pkgname */
}

static int do_movefiles(char **arg, char reply[REPLY_MAX])
@@ -105,17 +105,17 @@ struct cmdinfo {

struct cmdinfo cmds[] = {
    { "ping",                 0, do_ping },
    { "install",              4, do_install },
    { "install",              3, do_install },
    { "dexopt",               3, do_dexopt },
    { "movedex",              2, do_move_dex },
    { "rmdex",                1, do_rm_dex },
    { "remove",               2, do_remove },
    { "rename",               3, do_rename },
    { "remove",               1, do_remove },
    { "rename",               2, do_rename },
    { "freecache",            1, do_free_cache },
    { "rmcache",              2, do_rm_cache },
    { "rmcache",              1, do_rm_cache },
    { "protect",              2, do_protect },
    { "getsize",              4, do_get_size },
    { "rmuserdata",           2, do_rm_user_data },
    { "getsize",              3, do_get_size },
    { "rmuserdata",           1, do_rm_user_data },
    { "movefiles",            0, do_movefiles },
};

+6 −13
Original line number Diff line number Diff line
@@ -48,23 +48,16 @@
/* elements combined with a valid package name to form paths */

#define PKG_DIR_PREFIX         "/data/data/"
#define PKG_SEC_DIR_PREFIX     "/data/secure/data/"
#define PKG_DIR_POSTFIX        ""

#define PKG_LIB_PREFIX         "/data/data/"
#define PKG_SEC_LIB_PREFIX     "/data/secure/data/"
#define PKG_LIB_POSTFIX        "/lib"

#define CACHE_DIR_PREFIX       "/data/data/"
#define CACHE_SEC_DIR_PREFIX   "/data/secure/data/"
#define CACHE_DIR_POSTFIX      "/cache"

#define APK_DIR_PREFIX         "/data/app/"

/* Encrypted File SYstems constants */
#define USE_ENCRYPTED_FS       1
#define USE_UNENCRYPTED_FS     0

/* other handy constants */

#define PROTECTED_DIR_PREFIX  "/data/app-private/"
@@ -96,16 +89,16 @@ int delete_dir_contents_fd(int dfd, const char *name);

/* commands.c */

int install(const char *pkgname, int encrypted_fs_flag, uid_t uid, gid_t gid);
int uninstall(const char *pkgname, int encrypted_fs_flag);
int renamepkg(const char *oldpkgname, const char *newpkgname, int encrypted_fs_flag);
int delete_user_data(const char *pkgname, int encrypted_fs_flag);
int delete_cache(const char *pkgname, int encrypted_fs_flag);
int install(const char *pkgname, uid_t uid, gid_t gid);
int uninstall(const char *pkgname);
int renamepkg(const char *oldpkgname, const char *newpkgname);
int delete_user_data(const char *pkgname);
int delete_cache(const char *pkgname);
int move_dex(const char *src, const char *dst);
int rm_dex(const char *path);
int protect(char *pkgname, gid_t gid);
int get_size(const char *pkgname, const char *apkpath, const char *fwdlock_apkpath,
             int *codesize, int *datasize, int *cachesize, int encrypted_fs_flag);
             int *codesize, int *datasize, int *cachesize);
int free_cache(int free_size);
int dexopt(const char *apk_path, uid_t uid, int is_public);
int movefiles();
+1 −7
Original line number Diff line number Diff line
@@ -1483,14 +1483,8 @@ public class AccountManagerService
    }

    private static String getDatabaseName() {
        if(Environment.isEncryptedFilesystemEnabled()) {
            // Hard-coded path in case of encrypted file system
            return Environment.getSystemSecureDirectory().getPath() + File.separator + DATABASE_NAME;
        } else {
            // Regular path in case of non-encrypted file system
        return DATABASE_NAME;
    }
    }

    private class DatabaseHelper extends SQLiteOpenHelper {

+1 −3
Original line number Diff line number Diff line
@@ -312,9 +312,7 @@ public class SyncStorageEngine extends Handler {
        if (sSyncStorageEngine != null) {
            return;
        }
        // This call will return the correct directory whether Encrypted File Systems is
        // enabled or not.
        File dataDir = Environment.getSecureDataDirectory();
        File dataDir = Environment.getDataDirectory();
        sSyncStorageEngine = new SyncStorageEngine(context, dataDir);
    }

Loading