Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Revert "repo: skip dead symlinks and symlinks pointing inside the repo"
Shawn Webb committed 4 years ago
commit 6b27228f40a00ffe50e806102c84cb059f0d0a75
parent 9b9eef5
2 files changed +1 -56
modified libpkg/pkg_repo_create.c
@@ -1,5 +1,5 @@
/*-
-
 * 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,
modified tests/frontend/repo.sh
@@ -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"
-
}