[pacman-dev] [PATCH] libmakepkg: fix linting arrays of empty strings

morganamilo morganamilo at gmail.com
Tue Oct 16 17:49:23 UTC 2018


[[ ${array[@]} ]] will resolve to false if array only contains empty
strings. This means that values such as "depends=('')" can be inserted
into a pkgbuild and bypass the linting.

This causes makepkg to successfully build the package while pacman
refuses to install it because of the unmet dependency on ''.

Instead check the length of the array.

Signed-off-by: morganamilo <morganamilo at gmail.com>

diff --git a/scripts/libmakepkg/util/pkgbuild.sh.in b/scripts/libmakepkg/util/pkgbuild.sh.in
index c6f8a82d..b29229a3 100644
--- a/scripts/libmakepkg/util/pkgbuild.sh.in
+++ b/scripts/libmakepkg/util/pkgbuild.sh.in
@@ -60,7 +60,7 @@ extract_global_variable() {
 
 	if (( isarray )); then
 		array_build ref "$attr"
-		[[ ${ref[@]} ]] && array_build "$outputvar" "$attr"
+		(( ${#ref[@]} )) && array_build "$outputvar" "$attr"
 	else
 		[[ ${!attr} ]] && printf -v "$outputvar" %s "${!attr}"
 	fi
@@ -144,7 +144,7 @@ get_pkgbuild_all_split_attributes() {
 		done
 	done
 
-	[[ ${all_list[@]} ]] && array_build "$outputvar" all_list
+	(( ${#all_list[@]} )) && array_build "$outputvar" all_list
 }
 
 ##
-- 
2.19.1


More information about the pacman-dev mailing list