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

Commit 8ebacb43 authored by Mark Salyzyn's avatar Mark Salyzyn Committed by android-build-merger
Browse files

Merge "libcutils: fs_config: target_out_path assumed /system" am: 66b84917

am: 27c796b2

Change-Id: I7039e9a8e7547642fd7a7817ae470fb82ff806bb
parents 59faf612 27c796b2
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -232,16 +232,20 @@ static int fs_config_open(int dir, int which, const char* target_out_path) {

    if (target_out_path && *target_out_path) {
        /* target_out_path is the path to the directory holding content of
         * system partition but as we cannot guaranty it ends with '/system'
         * we need this below skip_len logic */
         * system partition but as we cannot guarantee it ends with '/system'
         * or a trailing slash or not, we need to strip them off. */
        char* name = NULL;
        int target_out_path_len = strlen(target_out_path);
        int skip_len = strlen("/system");

        if (target_out_path[target_out_path_len] == '/') {
            skip_len++;
        while ((target_out_path_len > 0) &&
               (target_out_path[target_out_path_len - strlen("/")] == '/')) {
            --target_out_path_len;
        }
        if (asprintf(&name, "%s%s", target_out_path, conf[which][dir] + skip_len) != -1) {
        if ((target_out_path_len >= (int)strlen("/system")) &&
            !strcmp(target_out_path + target_out_path_len - strlen("/system"), "/system")) {
            target_out_path_len -= strlen("/system");
        }
        if (asprintf(&name, "%.*s%s", target_out_path_len, target_out_path, conf[which][dir]) != -1) {
            fd = TEMP_FAILURE_RETRY(open(name, O_RDONLY | O_BINARY));
            free(name);
        }