Commit 6b27228f authored by Shawn Webb's avatar Shawn Webb
Browse files

Revert "repo: skip dead symlinks and symlinks pointing inside the repo"

This reverts commit 727f1c94

.
Signed-off-by: Shawn Webb's avatarShawn Webb <shawn.webb@hardenedbsd.org>
(cherry picked from commit f57808583805fcf93e31d06b4d0bf6808675d1d0)
Signed-off-by: Shawn Webb's avatarShawn Webb <shawn.webb@hardenedbsd.org>
parent 9b9eef51
/*-
* Copyright (c) 2011-2021 Baptiste Daroussin <bapt@FreeBSD.org>
* Copyright (c) 2011-2019 Baptiste Daroussin <bapt@FreeBSD.org>
* Copyright (c) 2011-2012 Julien Laffaye <jlaffaye@FreeBSD.org>
* Copyright (c) 2011-2012 Marin Atanasov Nikolov <dnaeon@gmail.com>
* Copyright (c) 2012-2013 Matthew Seaman <matthew@FreeBSD.org>
......@@ -218,14 +218,7 @@ pkg_create_repo_read_fts(struct pkg_fts_item **items, FTS *fts,
char *ext;
int linklen = 0;
char tmp_name[MAXPATHLEN] = { 0 };
char repo_path[MAXPATHLEN];
size_t repo_path_len;
if (realpath(repopath, repo_path) == NULL) {
pkg_emit_errno("invalid repo path", repopath);
return (EPKG_FATAL);
}
repo_path_len = strlen(repo_path);
errno = 0;
while ((fts_ent = fts_read(fts)) != NULL) {
......@@ -253,14 +246,6 @@ pkg_create_repo_read_fts(struct pkg_fts_item **items, FTS *fts,
}
/* Follow symlinks. */
if (fts_ent->fts_info == FTS_SL) {
/*
* Skip symlinks pointing inside the repo
* and dead symlinks
*/
if (realpath(fts_ent->fts_path, tmp_name) == NULL)
continue;
if (strncmp(repo_path, tmp_name, repo_path_len) == 0)
continue;
/* Skip symlinks to hashed packages */
if (meta->hash) {
linklen = readlink(fts_ent->fts_path,
......
......@@ -7,7 +7,6 @@ tests_init \
repo_v2 \
repo_multiversion \
repo_multiformat \
repo_symlinks \
repo_content
repo_v1_body() {
......@@ -183,42 +182,3 @@ EOF
atf_check -o match:"Installing plop-1\.1" \
pkg -C ./pkg.conf install -y plop
}
repo_symlinks_body() {
atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg test test 1.0 "${TMPDIR}"
atf_check pkg create --format txz -M test.ucl
mkdir repo
ln -sf ../test-1.0.pkg ./repo/meh-1.0.pkg
atf_check -o ignore pkg repo repo
cat > pkg.conf << EOF
PKG_DBDIR=${TMPDIR}
REPOS_DIR=[]
repositories: {
local: { url : file://${TMPDIR}/repo }
}
EOF
atf_check -o ignore \
pkg -C ./pkg.conf update
atf_check -o inline:"test\n" \
pkg -C ./pkg.conf rquery -a "%n"
rm -rf repo
mkdir repo
cp test-1.0.pkg repo/
ln -fs test-1.0.pkg ./repo/meh-1.0.pkg
atf_check -o ignore pkg repo repo
atf_check -o ignore \
pkg -C ./pkg.conf update -f
atf_check -o inline:"test\n" \
pkg -C ./pkg.conf rquery -a "%n"
}
repo_content_body() {
atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg test test 1.0 "${TMPDIR}"
atf_check pkg create --format txz -M test.ucl
atf_check -o ignore pkg repo .
nb=$(tar -xf packagesite.pkg -O - packagesite.yaml | wc -l)
[ $nb -eq 1 ] || atf_fail "packagesite has $nb entries instead of 1"
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment