Stop urls containing & or ? from breaking get_downloadclient() and get_downloadcmd(). Fixes FS#11076 Signed-off-by: Henning Garus <henning.garus@gmail.com> --- scripts/makepkg.sh.in | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 041b460..38364a6 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -256,7 +256,7 @@ in_array() { get_downloadclient() { # $1 = url with valid protocol prefix local url=$1 - local proto=$(echo $netfile | sed 's|://.*||') + local proto=$(echo "$url" | sed 's|://.*||') # loop through DOWNLOAD_AGENTS variable looking for protocol local i @@ -293,7 +293,8 @@ get_downloadcmd() { local file=$3 if echo "$dlagent" | grep -q "%u" ; then - local dlcmd=$(echo "$dlagent" | sed "s|%o|$file.part|" | sed "s|%u|$netfile|") + #use awk because of possible & in $netfile (FS#11076) + local dlcmd=$(echo "$dlagent" | sed "s|%o|$file.part|" | awk -F "%u" -v nf="$netfile" '{ print $1 nf $2}') else local dlcmd="$dlagent $netfile" fi @@ -443,7 +444,10 @@ download_sources() { msg2 "$(gettext "Downloading %s...")" "$file" # fix flyspray bug #3289 local ret=0 + #disable expansion of possible ? in $netfile (FS#11076) + set -f $(get_downloadcmd "$dlclient" "$netfile" "$file") || ret=$? + set +f if [ $ret -gt 0 ]; then error "$(gettext "Failure while downloading %s")" "$file" plain "$(gettext "Aborting...")" -- 1.5.6.4