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

Commit 8703bea1 authored by Thierry Strudel's avatar Thierry Strudel Committed by Android (Google) Code Review
Browse files

Merge "fs_config: replace getenv('OUT') by new fs_config parameter" into mnc-dev

parents 787c3764 df33ffad
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ static int mkdirs(char *name)
        if(x == 0) return 0;
        *x = 0;
        if (should_use_fs_config(name)) {
            fs_config(name, 1, &uid, &gid, &mode, &cap);
            fs_config(name, 1, NULL, &uid, &gid, &mode, &cap);
        }
        ret = adb_mkdir(name, mode);
        if((ret < 0) && (errno != EEXIST)) {
@@ -366,7 +366,7 @@ static int do_send(int s, char *path, char *buffer)
        tmp++;
    }
    if (should_use_fs_config(path)) {
        fs_config(tmp, 0, &uid, &gid, &mode, &cap);
        fs_config(tmp, 0, NULL, &uid, &gid, &mode, &cap);
    }
    return handle_send_file(s, path, uid, gid, mode, buffer, do_unlink);
}
+9 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ struct fs_config_entry {
};

static struct fs_config_entry* canned_config = NULL;
static char *target_out_path = NULL;

/* Each line in the canned file should be a path plus three ints (uid,
 * gid, mode). */
@@ -79,7 +80,8 @@ static void fix_stat(const char *path, struct stat *s)
    } else {
        // Use the compiled-in fs_config() function.
        unsigned st_mode = s->st_mode;
        fs_config(path, S_ISDIR(s->st_mode), &s->st_uid, &s->st_gid, &st_mode, &capabilities);
        fs_config(path, S_ISDIR(s->st_mode), target_out_path,
                       &s->st_uid, &s->st_gid, &st_mode, &capabilities);
        s->st_mode = (typeof(s->st_mode)) st_mode;
    }
}
@@ -328,6 +330,12 @@ int main(int argc, char *argv[])
    argc--;
    argv++;

    if (argc > 1 && strcmp(argv[0], "-d") == 0) {
        target_out_path = argv[1];
        argc -= 2;
        argv += 2;
    }

    if (argc > 1 && strcmp(argv[0], "-f") == 0) {
        read_canned_config(argv[1]);
        argc -= 2;
+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ static int format_ext4(char *fs_blkdev, char *fs_mnt_point)
    info.len = ((off64_t)nr_sec * 512);

    /* Use make_ext4fs_internal to avoid wiping an already-wiped partition. */
    rc = make_ext4fs_internal(fd, NULL, fs_mnt_point, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL);
    rc = make_ext4fs_internal(fd, NULL, NULL, fs_mnt_point, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL);
    if (rc) {
        ERROR("make_ext4fs returned %d.\n", rc);
    }
+24 −1
Original line number Diff line number Diff line
@@ -767,8 +767,24 @@ static int get_verity_state_offset(struct fstab_rec *fstab, off64_t *offset)

static int load_verity_state(struct fstab_rec *fstab, int *mode)
{
    off64_t offset = 0;
    char propbuf[PROPERTY_VALUE_MAX];
    int match = 0;
    off64_t offset = 0;

    /* use the kernel parameter if set */
    property_get("ro.boot.veritymode", propbuf, "");

    if (*propbuf != '\0') {
        if (!strcmp(propbuf, "enforcing")) {
            *mode = VERITY_MODE_DEFAULT;
            return 0;
        } else if (!strcmp(propbuf, "logging")) {
            *mode = VERITY_MODE_LOGGING;
            return 0;
        } else {
            INFO("Unknown value %s for veritymode; ignoring", propbuf);
        }
    }

    if (get_verity_state_offset(fstab, &offset) < 0) {
        /* fall back to stateless behavior */
@@ -855,6 +871,13 @@ int fs_mgr_update_verity_state(fs_mgr_verity_state_callback callback)
    struct dm_ioctl *io = (struct dm_ioctl *) buffer;
    struct fstab *fstab = NULL;

    /* check if we need to store the state */
    property_get("ro.boot.veritymode", propbuf, "");

    if (*propbuf != '\0') {
        return 0; /* state is kept by the bootloader */
    }

    fd = TEMP_FAILURE_RETRY(open("/dev/device-mapper", O_RDWR | O_CLOEXEC));

    if (fd == -1) {
+2 −2
Original line number Diff line number Diff line
@@ -206,13 +206,13 @@ __BEGIN_DECLS
 * Used in:
 *  build/tools/fs_config/fs_config.c
 *  build/tools/fs_get_stats/fs_get_stats.c
 *  external/genext2fs/genext2fs.c
 *  system/extras/ext4_utils/make_ext4fs_main.c
 *  external/squashfs-tools/squashfs-tools/android.c
 *  system/core/cpio/mkbootfs.c
 *  system/core/adb/file_sync_service.cpp
 *  system/extras/ext4_utils/canned_fs_config.c
 */
void fs_config(const char *path, int dir,
void fs_config(const char *path, int dir, const char *target_out_path,
               unsigned *uid, unsigned *gid, unsigned *mode, uint64_t *capabilities);

ssize_t fs_config_generate(char *buffer, size_t length, const struct fs_path_config *pc);
Loading