On 17/10/18 3:49 am, morganamilo wrote:
> [[ ${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 <[email protected]>
> 

The error this gives is:
==> ERROR: depends is not allowed to be empty.

but this also gives this error:

depends=('glibc' '' 'gcc')

so this is not a regression...   just a poorly worked error message.

Allan


> 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
>  }
>  
>  ##
> 

Reply via email to