[pacman-dev] [PATCH] Reopen stdin before chrooting

Allan McRae allan at archlinux.org
Sat Jan 9 01:34:36 UTC 2021


On 1/1/21 4:13 am, morganamilo via pacman-dev wrote:
> Fixes FS#68630

Patch is fine, but commit message needed work.  I don't think it is the
reopening of stdin that is important here.

Here is what I edited it to:

    Read targets from stdin before chrooting

    Operations involving --sysroot and reading targets from stdin were
    failing due to attempting to read targets after chrooting.  Move the
    chroot to happen after targets are read.

    Fixes FS#68630


> 
> diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
> index 7b19162c..4fb7fe3c 100644
> --- a/src/pacman/pacman.c
> +++ b/src/pacman/pacman.c
> @@ -1135,12 +1135,6 @@ int main(int argc, char *argv[])
>  		cleanup(EXIT_FAILURE);
>  	}
>  
> -	if(config->sysroot && (chroot(config->sysroot) != 0 || chdir("/") != 0)) {
> -		pm_printf(ALPM_LOG_ERROR,
> -				_("chroot to '%s' failed: (%s)\n"), config->sysroot, strerror(errno));
> -		cleanup(EXIT_FAILURE);
> -	}
> -
>  	/* we support reading targets from stdin if a cmdline parameter is '-' */
>  	if(alpm_list_find_str(pm_targets, "-")) {
>  		if(!isatty(fileno(stdin))) {
> @@ -1191,6 +1185,12 @@ int main(int argc, char *argv[])
>  		}
>  	}
>  
> +	if(config->sysroot && (chroot(config->sysroot) != 0 || chdir("/") != 0)) {
> +		pm_printf(ALPM_LOG_ERROR,
> +				_("chroot to '%s' failed: (%s)\n"), config->sysroot, strerror(errno));
> +		cleanup(EXIT_FAILURE);
> +	}
> +
>  	pm_printf(ALPM_LOG_DEBUG, "pacman v%s - libalpm v%s\n", PACKAGE_VERSION, alpm_version());
>  
>  	/* parse the config file */
> 


More information about the pacman-dev mailing list