From patchwork Wed Oct 28 01:39:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: morganamilo X-Patchwork-Id: 1789 Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id 9E8E81BF9A1C0 for ; Wed, 28 Oct 2020 01:39:40 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on apollo.archlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1, MAILING_LIST_MULTI=-1,SPF_HELO_NONE=0.001,T_DMARC_POLICY_NONE=0.01 autolearn=ham autolearn_force=no version=3.4.4 X-Spam-BL-Results: Received: from mail.archlinux.org (mail.archlinux.org [IPv6:2a01:4f9:c010:3052::1]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Wed, 28 Oct 2020 01:39:40 +0000 (UTC) Received: from mail.archlinux.org (localhost [127.0.0.1]) by mail.archlinux.org (Postfix) with ESMTP id 97F8951361; Wed, 28 Oct 2020 01:39:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=luna2; t=1603849176; bh=NezZZXKKVqYybd+v6S4qjrIko8THJBZYb8fWtzH8cmM=; h=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:Reply-To; b=SwvXFufElxuQFpNe9yE7LI7RGCDvBR9E/KbW9RhKIRGzBsqh92X2JDTJDyOhqtZSE cXRfHLOABzAqjCpsMuAu5wjoEPXGLIp6k4khW0/eUKxZh2RgfFPFcIO+iakUCZo+6F 5A/a29kOaHuJlpqt3Q32xMndPsVl9xBhHVEjBV9I4fmpp5ni2GfYGz5gQV7ealmohC wtZMv0PqZeWuqtGrXOA5u1dGhwAhRb1o+NcTuMTFYOidwJGA9z76C85Ni8x7tzDacH srF+a05HQ5pjySIWKqeQNNC4zMVKlGIW5Z7sznoSNNJgmDq5F3tlRjzwUM/LLuInUL aA+LFGeX65hxx5pMSGqYyJHWEVo+KJsUjyD5Ax17AC4wTDS43LoQNmUHCfJoDsdAzU fEP3CRnns+G7f9ZgItioL1zxLashXpK6yh/IE2/mtK3mfjNeEZCQZKA/qycoPQnSGg 3Plpz4ogmd1GSz37dlYs5Rvil0xDgyJYWSjW2xTkgtWUPCxtGMhJshGkV50LcR7jbb 6rk6MjquCeymbD88WAJCsFT2Pw17R4scpR/IXnoFfcT93ZgXeiq4zZL3vokdBCuaIR +BNtsGt+hVHMUkYAKOcsgLyGMNE583KZF0Ib3wtymJmqSib2jkSRxxwKZ7kP3TTvG7 jPW8Salr5gOBwyECvMK0Kyo8= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=mail; t=1603849177; bh=NezZZXKKVqYybd+v6S4qjrIko8THJBZYb8fWtzH8cmM=; h=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:Reply-To; b=WR5ASkJiR3ssn3wfpPB144hxZD7EB0CkV2auEDF+S14geaVtljZy1hsYMQiGELTZd EWU6PhFlvJW/Li9rcnSXAC+J8urZ7h0ht2RABeVfXZSOExOjJhMeCUz5zNahFbnIeF UdZNhy0tIjVbcmieGM2WsiIRYj4gMi5Zg7GTox7fGwuYA8B+cr1h2BlelnfzxJJ50A z7ibbr0BnJ28VcDFI8/B6hMdRZBzCiaTAB9Cx3VTPJ1uXK0HjF5+Dk/dw0IjbSla+y 163XxRI/u4vxsI26eb4fDt6ylvHeTG7T4EUl6Gr+SydDWLAzDwx/0PSNzI2EgfDGQa ZaC1srIT5DbTwUgGA3ZqnpOvSA0F3Mnx2flUWN2decVkhGejBcm1Neb12maKgtF+25 veqo77cNUHXXpHUfAIxIl6XTuMC3usVEEh2dW7Z6f1gJvaVPnernHPJaKaWkWlXM7g wJjr09ZtrpcY+7AdYWnUBYQsMY00hT1cZdca27Ef/ej4LUWEQE+230zBRFQpF4UbTp pS+TLoe7/sj3qQJoCCHsqzi8Dnxx/KR+Vf9tqSBF3vK5bIrZjJo+cIO0oMbdNISUVw 1hT2DkU9vE/Y/ssPfUtDSb0Yah26Jy6D/vPXfSZhBQMrabM2CeJnOiueadthjJzkx7 qNnInYFlBl+bzMrp2Id/OErQ= From: morganamilo DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=mail; t=1603849172; bh=NezZZXKKVqYybd+v6S4qjrIko8THJBZYb8fWtzH8cmM=; h=From:To:Cc:Subject:Date; b=TR/qonRYQpUrXv5Mh+RPM1AlT9hMuD70b4/Ep4mJTSiB2sL0Ji73tP0dmKRS+yDf2 D3EsuJCvqIiXf7gE+vKtvypBfWRcc6zVWGn2Nc1Y3NUWs2ZcE9XYZXrAdlsuBt9sPu 968PfT1zTbSLkVr6iQskQJ3jOXJE9ijosKkPstheecigQTUhp4dslOA8/KN2K3MSF1 nZRzSuZ8KbEr0YwAo7GAQMbYzV2CaGDdSQncg+Y/G+Q9XDc7w0fn8wXs0iVtPTsOvg nkpg9ZYwMmnGKSCHLdJeBiPGWt1UrRUJ23imQjMlPtED4OonfjN4amZBcwQ63osjX0 OqsT3AGmtZW0YrLjUvthkj1lOzqNjAJKv7TJ5SWD/Mr3SX3Z2uu2JzmwEcwYboBy8d Hnwmh+S96fsKvtqKxoGXDjmV8fzUo5C2/YuzosF24TI8hJ/yH2eCo+4jpjY8m2ijqE qyruyQttXBFdAR6dsixvhNCLlF/oL0gpRQzcmVq3Fwatcyw6WybaAVQRPJwg6adMz/ b1vMF/57xNZST6k/RqHE1I5CKrCgMhTH80Sv9F2viVnav14VMESPFJnlwbTWW96TJv N7Stfr9+K0zp8saGpcX1NhPqNlzyO42AnlTTQvr+a3wZ2yBd0BDOmLUAux6izhUeZp BZA/YczMrnlkU5RaCv0eUHio= To: pacman-dev@archlinux.org Date: Wed, 28 Oct 2020 01:39:05 +0000 Message-Id: <20201028013904.63736-1-morganamilo@archlinux.org> X-Mailer: git-send-email 2.29.1 MIME-Version: 1.0 Subject: [pacman-dev] [PATCH v2] libmakepkg: lint all arrays for empty values X-BeenThere: pacman-dev@archlinux.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Discussion list for pacman development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Discussion list for pacman development Errors-To: pacman-dev-bounces@archlinux.org Sender: "pacman-dev" Empty values break pacman's db format, as an empty line indicates an end of section. --- I've seen this out in the wild: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=vim-coc-highlight-git&id=3063e1a6d3e72a35528 diff --git a/scripts/libmakepkg/lint_pkgbuild/variable.sh.in b/scripts/libmakepkg/lint_pkgbuild/variable.sh.in index 1bc49722..22f5fbbb 100644 --- a/scripts/libmakepkg/lint_pkgbuild/variable.sh.in +++ b/scripts/libmakepkg/lint_pkgbuild/variable.sh.in @@ -31,7 +31,7 @@ lint_pkgbuild_functions+=('lint_variable') lint_variable() { - local i a pkg out bad ret=0 + local i a pkg out bad array var ret=0 # global variables for i in ${pkgbuild_schema_arrays[@]}; do @@ -93,5 +93,62 @@ lint_variable() { done done + # ensure lists don't contain empty values + for i in ${pkgbuild_schema_arrays[@]}; do + if declare -p $i > /dev/null 2>&1; then + array_build "array" "$i" + for var in "${array[@]}"; do + if [[ -z "$var" ]]; then + error "$(gettext "%s is not allowed to be empty")" "$i" + ret=1 + fi + done + fi + done + + for a in ${arch[@]}; do + [[ $a == "any" ]] && continue + + for i in ${pkgbuild_schema_arch_arrays[@]}; do + if declare -p "${i}_${a}" > /dev/null 2>&1; then + array_build "array" "${i}_${a}" + for var in "${array[@]}"; do + if [[ -z "$var" ]]; then + error "$(gettext "%s is not allowed to be empty")" "${i}_${a}" + ret=1 + fi + done + fi + done + done + + for pkg in ${pkgname[@]}; do + for i in ${pkgbuild_schema_arrays[@]}; do + if extract_function_variable "package_$pkg" $i 1 out; then + for val in "${out[@]}" ;do + if [[ -z "$val" ]]; then + error "$(gettext "%s is not allowed to be empty")" "$i" + ret=1 + fi + done + fi + done + + for a in ${arch[@]}; do + [[ $a == "any" ]] && continue + + for i in ${pkgbuild_schema_arch_arrays[@]}; do + if extract_function_variable "package_$pkg" "${i}_${a}" 1 out; then + for val in "${out[@]}" ;do + if [[ -z "$val" ]]; then + error "$(gettext "%s is not allowed to be empty")" "${i}_${a}" + ret=1 + fi + done + fi + done + done + done + return $ret }