1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-08-13 17:03:46 -04:00

repo-add: enforce file extensions

Allow one of 4 archive extensions: .tar{,.gz,.xz,.bz2} for each of the 2
valid repo extensions: .db and .files. Check for this via
'verify_repo_extension' directly after option parsing to assert that
this extension is present, and again after files have been added to get
the proper archive option for bsdtar.

Signed-off-by: Dave Reisner <d@falconindy.com>
This commit is contained in:
Dave Reisner 2011-06-21 13:58:32 -04:00 committed by Dave Reisner
parent 122b4c2187
commit 399184d68f

View File

@ -221,6 +221,22 @@ verify_signature() {
fi
}
verify_repo_extension() {
local repofile=$1
case "$repofile" in
*.@(db|files).tar.gz) TAR_OPT="z" ;;
*.@(db|files).tar.bz2) TAR_OPT="j" ;;
*.@(db|files).tar.xz) TAR_OPT="J" ;;
*.@(db|files).tar) TAR_OPT="" ;;
*) error "$(gettext "'%s' does not have a valid archive extension.")" \
"$repofile"
exit 1 ;;
esac
printf '%s' "$TAR_OPT"
}
# write an entry to the pacman database
# arg1 - path to package
db_write_entry() {
@ -571,8 +587,11 @@ while (( $# )); do
shift
done
REPO_DB_FILE=${args[0]}
LOCKFILE=$REPO_DB_FILE.lck
verify_repo_extension "$REPO_DB_FILE" >/dev/null
check_repo_db
for arg in "${args[@]:1}"; do
@ -586,15 +605,7 @@ done
if (( success )); then
msg "$(gettext "Creating updated database file '%s'")" "$REPO_DB_FILE"
case "$REPO_DB_FILE" in
*.tar.gz) TAR_OPT="z" ;;
*.tar.bz2) TAR_OPT="j" ;;
*.tar.xz) TAR_OPT="J" ;;
*.tar) TAR_OPT="" ;;
*) warning "$(gettext "'%s' does not have a valid archive extension.")" \
"$REPO_DB_FILE" ;;
esac
TAR_OPT=$(verify_repo_extension "$REPO_DB_FILE")
filename=${REPO_DB_FILE##*/}
pushd "$tmpdir" >/dev/null