commit: 18886e6e1c037ea95a05ff200a8a5097df80d9fe Author: Fabian Groffen <grobian <AT> gentoo <DOT> org> AuthorDate: Mon Jun 10 10:01:35 2019 +0000 Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org> CommitDate: Mon Jun 10 10:01:35 2019 +0000 URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=18886e6e
qmerge: fix some issues regarding EPREFIX usage - EROOT and ED don't have EPREFIX prefixed, but postfixed - config_protect should expect the checked paths not to have EPREFIX Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org> qmerge.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/qmerge.c b/qmerge.c index c11856b..31a9648 100644 --- a/qmerge.c +++ b/qmerge.c @@ -358,6 +358,10 @@ config_protected(const char *buf, int cp_argc, char **cp_argv, char dest[_Q_PATH_MAX]; snprintf(dest, sizeof(dest), "%s%s", portroot, buf); + /* config protect paths don't carry EPREFIX */ + if (strncmp(buf, CONFIG_EPREFIX, strlen(CONFIG_EPREFIX) - 1) == 0) + buf += strlen(CONFIG_EPREFIX) - 1; + /* Check CONFIG_PROTECT_MASK */ for (i = 1; i < cpm_argc; ++i) if (strncmp(cpm_argv[i], buf, strlen(cpm_argv[i])) == 0) @@ -370,7 +374,7 @@ config_protected(const char *buf, int cp_argc, char **cp_argv, return 1; /* this would probably be bad */ - if (strcmp("/bin/sh", buf) == 0) + if (strcmp(CONFIG_EPREFIX "bin/sh", buf) == 0) return 1; return 0; @@ -750,9 +754,9 @@ pkg_run_func_at(int dirfd, const char *vdb_path, const char *phases, const char "FILESDIR=/.does/not/exist/anywhere\n" "MERGE_TYPE=binary\n" "ROOT='%4$s'\n" - "EROOT=\"${EPREFIX%%/}/${ROOT#/}/\"\n" + "EROOT=\"/${ROOT#/}/${EPREFIX%%/}/\"\n" "D=\"%5$s\"\n" - "ED=\"${EPREFIX%%/}/${D#/}/\"\n" + "ED=\"${D%%/}/${EPREFIX%%/}/\"\n" "T=\"%6$s\"\n" /* Finally run the func */ "%7$s%2$s\n"