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

Commit 6bea6d03 authored by Sami Tolvanen's avatar Sami Tolvanen Committed by android-build-merger
Browse files

fs_mgr_verity: fix verity_update_state for A/B devices am: 9af867e7

am: 6de58ac5

Change-Id: I2611ad439c634194a5181fc243d6b3e27d8b800e
parents 53d13e34 6de58ac5
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -181,7 +181,7 @@ static int invalidate_table(char *table, size_t table_length)
    return -1;
}

static void verity_ioctl_init(struct dm_ioctl *io, char *name, unsigned flags)
static void verity_ioctl_init(struct dm_ioctl *io, const char *name, unsigned flags)
{
    memset(io, 0, DM_BUF_SIZE);
    io->data_size = DM_BUF_SIZE;
@@ -784,8 +784,9 @@ out:
int fs_mgr_update_verity_state(fs_mgr_verity_state_callback callback)
{
    alignas(dm_ioctl) char buffer[DM_BUF_SIZE];
    bool system_root = false;
    char fstab_filename[PROPERTY_VALUE_MAX + sizeof(FSTAB_PREFIX)];
    char *mount_point;
    const char *mount_point;
    char propbuf[PROPERTY_VALUE_MAX];
    char *status;
    int fd = -1;
@@ -813,6 +814,9 @@ int fs_mgr_update_verity_state(fs_mgr_verity_state_callback callback)
    property_get("ro.hardware", propbuf, "");
    snprintf(fstab_filename, sizeof(fstab_filename), FSTAB_PREFIX"%s", propbuf);

    property_get("ro.build.system_root_image", propbuf, "");
    system_root = !strcmp(propbuf, "true");

    fstab = fs_mgr_read_fstab(fstab_filename);

    if (!fstab) {
@@ -825,7 +829,12 @@ int fs_mgr_update_verity_state(fs_mgr_verity_state_callback callback)
            continue;
        }

        if (system_root && !strcmp(fstab->recs[i].mount_point, "/")) {
            mount_point = "system";
        } else {
            mount_point = basename(fstab->recs[i].mount_point);
        }

        verity_ioctl_init(io, mount_point, 0);

        if (ioctl(fd, DM_TABLE_STATUS, io)) {
@@ -836,8 +845,10 @@ int fs_mgr_update_verity_state(fs_mgr_verity_state_callback callback)

        status = &buffer[io->data_start + sizeof(struct dm_target_spec)];

        if (*status == 'C' || *status == 'V') {
            callback(&fstab->recs[i], mount_point, mode, *status);
        }
    }

    rc = 0;