summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2025-10-20 19:41:57 +0200
committerJulian Andres Klode <jak@debian.org>2025-10-20 19:42:57 +0200
commitcb8df17ff8e59192ae2ab864006eea120d408a7a (patch)
tree0a6bd49277e794010b90ba77e219ebebec706c00
parent683214eed4aced71f94f12a0cc70509bdb473c82 (diff)
Add some comments and tests around Keep-Fd ordering
-rw-r--r--apt-pkg/contrib/fileutl.cc1
-rwxr-xr-xtest/integration/test-close-range7
2 files changed, 8 insertions, 0 deletions
diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc
index 50b983924..7f785f21c 100644
--- a/apt-pkg/contrib/fileutl.cc
+++ b/apt-pkg/contrib/fileutl.cc
@@ -899,6 +899,7 @@ pid_t ExecFork()
return ExecFork(KeepFDs);
}
+// Keep in mind that KeepFDs must be ordered for close_range() to work.
pid_t ExecFork(std::set<int> KeepFDs)
{
// Fork off the process
diff --git a/test/integration/test-close-range b/test/integration/test-close-range
index 977c4cf0a..108fdea2d 100755
--- a/test/integration/test-close-range
+++ b/test/integration/test-close-range
@@ -23,3 +23,10 @@ close_range(6, 4294967295)" apthelper drop-privs -o APT::Keep-Fds::=3 -o APT::Ke
testsuccessequal "close_range(4, 4)
close_range(7, 4294967295)" apthelper drop-privs -o APT::Keep-Fds::=3 -o APT::Keep-Fds::=5 -o APT::Keep-Fds::=6 -o Debug::CloseRange=1 true
+
+# Check with reverse order
+testsuccessequal "close_range(4, 5)
+close_range(7, 4294967295)" apthelper drop-privs -o APT::Keep-Fds::=6 -o APT::Keep-Fds::=3 -o Debug::CloseRange=1 true
+
+testsuccessequal "close_range(3, 4)
+close_range(7, 4294967295)" apthelper drop-privs -o APT::Keep-Fds::=6 -o APT::Keep-Fds::=5 -o Debug::CloseRange=1 true