[pacman-dev] [PATCH v2 3/3] run XferCommand via exec
Allan McRae
allan at archlinux.org
Sat Oct 12 11:11:02 UTC 2019
On 12/10/19 1:45 pm, Andrew Gregory wrote:
> system() runs the provided command via a shell, which is subject to
> command injection. Even though pacman already provides a mechanism to
> sign and verify the databases containing the urls, certain distributions
> have yet to get their act together and start signing databases, leaving
> them vulnerable to MITM attacks. Replacing the system call with an
> almost equivalent exec call removes the possibility of a shell-injection
> attack for those users.
>
> Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
<snip>
> @@ -230,17 +300,26 @@ static int download_with_xfercommand(const char *url, const char *localpath,
> unlink(destfile);
> }
>
> - tempcmd = strdup(config->xfercommand);
> - /* replace all occurrences of %o with fn.part */
> - if(strstr(tempcmd, "%o")) {
> - usepart = 1;
> - parsedcmd = strreplace(tempcmd, "%o", tempfile);
> - free(tempcmd);
> - tempcmd = parsedcmd;
> + if((argv = calloc(config->xfercommand_argc + 1, sizeof(char*))) == NULL) {
need to free this at the end.
More information about the pacman-dev
mailing list