summaryrefslogtreecommitdiffstats
path: root/scripts/libmakepkg
diff options
context:
space:
mode:
authorAndrew Gregory <andrew.gregory.8@gmail.com>2019-06-03 09:32:35 +0200
committerAllan McRae <allan@archlinux.org>2019-06-06 02:34:23 +0200
commit55a65aaf904a32bcf59c652cbc03fc510c265142 (patch)
treeae1dd37e22b1d9c215aeff07b95b17239e259959 /scripts/libmakepkg
parentff1ae94c102cab487444bcdb0c76ee489c11dfe8 (diff)
downloadpacman-55a65aaf904a32bcf59c652cbc03fc510c265142.tar.gz
pacman-55a65aaf904a32bcf59c652cbc03fc510c265142.tar.xz
makepkg: restrict pkgname and pkgver to ascii
pkgname and pkgver are used as directory names within database files. libarchive does not provide a reliable locale-independent method for reading archive file names, causing errors when archive paths include non-ascii characters. This is a first step toward dealing with FS#49342, by hopefully reducing the number of packages with non-ascii data in the wild before updating libalpm to reject them outright. See https://github.com/libarchive/libarchive/wiki/Filenames and https://github.com/libarchive/libarchive/issues/587 Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'scripts/libmakepkg')
-rw-r--r--scripts/libmakepkg/lint_pkgbuild/pkgname.sh.in4
-rw-r--r--scripts/libmakepkg/lint_pkgbuild/pkgver.sh.in5
2 files changed, 9 insertions, 0 deletions
diff --git a/scripts/libmakepkg/lint_pkgbuild/pkgname.sh.in b/scripts/libmakepkg/lint_pkgbuild/pkgname.sh.in
index 84666a29..51a25d2c 100644
--- a/scripts/libmakepkg/lint_pkgbuild/pkgname.sh.in
+++ b/scripts/libmakepkg/lint_pkgbuild/pkgname.sh.in
@@ -45,6 +45,10 @@ lint_one_pkgname() {
error "$(gettext "%s is not allowed to start with a dot.")" "$type"
ret=1
fi
+ if [[ $name = *[![:ascii:]]* ]]; then
+ error "$(gettext "%s may only contain ascii characters.")" "$type"
+ return 1
+ fi
if [[ $name = *[^[:alnum:]+_.@-]* ]]; then
error "$(gettext "%s contains invalid characters: '%s'")" \
"$type" "${name//[[:alnum:]+_.@-]}"
diff --git a/scripts/libmakepkg/lint_pkgbuild/pkgver.sh.in b/scripts/libmakepkg/lint_pkgbuild/pkgver.sh.in
index 8d5d04f1..b0f45027 100644
--- a/scripts/libmakepkg/lint_pkgbuild/pkgver.sh.in
+++ b/scripts/libmakepkg/lint_pkgbuild/pkgver.sh.in
@@ -41,6 +41,11 @@ check_pkgver() {
error "$(gettext "%s is not allowed to contain colons, forward slashes, hyphens or whitespace.")" "pkgver${type:+ in $type}"
return 1
fi
+
+ if [[ $ver = *[![:ascii:]]* ]]; then
+ error "$(gettext "%s may only contain ascii characters.")" "pkgver${type:+ in $type}"
+ return 1
+ fi
}
lint_pkgver() {