[pacman-dev] [PATCH 4/4] makepkg: disallow values of 'arch' which might be problematic

Dave Reisner dreisner at archlinux.org
Sun Aug 10 09:33:24 EDT 2014


We rely on values in the arch array to be valid as part of variable
names, so extend the arch lint check to catch this.

This also cleans up lint_arch to restrict the use of "lint" only to the
package-specific architecture checks. It previously had an odd
declaration with a conditional expansion that would never be true.
---
 scripts/makepkg.sh.in | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index cec190b..0ea6d5f 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -2360,13 +2360,21 @@ lint_epoch() {
 }
 
 lint_arch() {
-	local name list=("${@:-"${arch[@]}"}")
+	local a name list
 
-	if [[ $list == 'any' ]]; then
+	if [[ $arch == 'any' ]]; then
 		return 0
 	fi
 
-	if ! in_array "$CARCH" "${list[@]}" && (( ! IGNOREARCH )); then
+	for a in "${arch[@]}"; do
+		if [[ $a = *[![:alnum:]_]* ]]; then
+			error "$(gettext "%s contains invalid characters: '%s'")" \
+					'arch' "${a//[[:alnum:]_]}"
+			ret=1
+		fi
+	done
+
+	if (( ! IGNOREARCH )) && ! in_array "$CARCH" "${arch[@]}"; then
 		error "$(gettext "%s is not available for the '%s' architecture.")" "$pkgbase" "$CARCH"
 		plain "$(gettext "Note that many packages may need a line added to their %s")" "$BUILDSCRIPT"
 		plain "$(gettext "such as %s.")" "arch=('$CARCH')"
-- 
2.0.4


More information about the pacman-dev mailing list