summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2024-01-08 09:15:17 +0000
committerJulian Andres Klode <jak@debian.org>2024-01-08 09:15:17 +0000
commit7a9a7c1025a5a9dcb27b0e8b5a2d40327fd3b911 (patch)
treec74b4a6f6a280a1a0f00a5976284d523342b096f
parentc555d8f1ae31d1f511bf811640423231b75a8e13 (diff)
parent7b41275b9da31d6c87bbaa0c9115e224e47b15e1 (diff)
Merge branch 'pu/reserved-file-extensions' into 'main'
Do not silently ignore directories for reserved file names See merge request apt-team/apt!311
-rw-r--r--apt-pkg/contrib/fileutl.cc8
-rwxr-xr-xtest/integration/test-ignored-files43
2 files changed, 48 insertions, 3 deletions
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc
index fad51ded1..99b1df3ff 100644
--- a/apt-pkg/contrib/fileutl.cc
+++ b/apt-pkg/contrib/fileutl.cc
@@ -486,12 +486,14 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c
{
if (RealFileExists(File) == false)
{
+ string d_ext = flExtension(Ent->d_name);
// do not show ignoration warnings for directories
- if (
+ if ((
#ifdef _DIRENT_HAVE_D_TYPE
- Ent->d_type == DT_DIR ||
+ Ent->d_type == DT_DIR ||
#endif
- DirectoryExists(File) == true)
+ DirectoryExists(File) == true) &&
+ (d_ext.empty() || std::find(Ext.begin(), Ext.end(), d_ext) == Ext.end()))
continue;
if (SilentIgnore.Match(Ent->d_name) == false)
_error->Notice(_("Ignoring '%s' in directory '%s' as it is not a regular file"), Ent->d_name, Dir.c_str());
diff --git a/test/integration/test-ignored-files b/test/integration/test-ignored-files
new file mode 100755
index 000000000..90defdcd4
--- /dev/null
+++ b/test/integration/test-ignored-files
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -e
+
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
+
+setupenvironment
+configarchitecture 'amd64'
+
+setupaptarchive --no-update
+
+testsuccessequal "Reading package lists...
+Building dependency tree...
+All packages are up to date." apt update -q
+
+
+msgtest "Check notices about .list and .sources directories in sources.list.d"
+mkdir rootdir/etc/apt/sources.list.d/a-dir-that-will-be-ignored
+mkdir rootdir/etc/apt/sources.list.d/a-dir-that-will-be-ignored.conf
+mkdir rootdir/etc/apt/sources.list.d/a-dir-that-will-not-be-ignored.list
+mkdir rootdir/etc/apt/sources.list.d/a-dir-that-will-not-be-ignored.sources
+testsuccessequal "Reading package lists...
+Building dependency tree...
+All packages are up to date.
+N: Ignoring 'a-dir-that-will-not-be-ignored.list' in directory '${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list.d/' as it is not a regular file
+N: Ignoring 'a-dir-that-will-not-be-ignored.sources' in directory '${TMPWORKINGDIRECTORY}/rootdir/etc/apt/sources.list.d/' as it is not a regular file" apt update
+rmdir rootdir/etc/apt/sources.list.d/a-dir-*
+
+msgtest "Check for notices about .conf directories in apt.conf.d"
+mkdir -p rootdir/etc/apt/apt.conf.d/a-dir-that-will-be-ignored
+mkdir -p rootdir/etc/apt/apt.conf.d/a-dir-that-will-be-ignored.list
+mkdir -p rootdir/etc/apt/apt.conf.d/a-dir-that-will-not-be-ignored.conf
+testsuccessequal "N: Ignoring 'a-dir-that-will-not-be-ignored.conf' in directory '${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/' as it is not a regular file" aptconfig shell
+rmdir rootdir/etc/apt/apt.conf.d/a-dir-*
+
+msgtest "Check for directory notices in preferences.d"
+mkdir -p rootdir/etc/apt/preferences.d/a-dir-that-will-be-ignored
+mkdir -p rootdir/etc/apt/preferences.d/a-dir-that-will-be-ignored.conf
+mkdir -p rootdir/etc/apt/preferences.d/a-dir-that-will-not-be-ignored.pref
+testsuccessequal "Package files:
+Pinned packages:
+N: Ignoring 'a-dir-that-will-not-be-ignored.pref' in directory '${TMPWORKINGDIRECTORY}/rootdir/etc/apt/preferences.d/' as it is not a regular file" apt policy
+rmdir rootdir/etc/apt/preferences.d/a-dir-*