aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Matuska <mm@FreeBSD.org>2023-11-19 01:09:34 +0000
committerMartin Matuska <mm@FreeBSD.org>2023-11-26 00:24:42 +0000
commita4d16707a81b13cb711a4a75843d5d24486de150 (patch)
tree91482496c24e45097f656c5575f9988f5fb57c1f
parent1e4798e9677f17a7cdc9a1873a0c6e008fc620d8 (diff)
downloadsrc-a4d16707a81b13cb711a4a75843d5d24486de150.tar.gz
src-a4d16707a81b13cb711a4a75843d5d24486de150.zip
cat: fallback on EISDIR with copy_file_range(2)
The filesystem may support reading directories directly when security.bsd.allow_read_dir is set. PR: 275099 (cherry picked from commit 3c773cad57064c23873f286fbec69f6f0305b889)
-rw-r--r--bin/cat/cat.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/bin/cat/cat.c b/bin/cat/cat.c
index ec14451acd0c..1468faf494a3 100644
--- a/bin/cat/cat.c
+++ b/bin/cat/cat.c
@@ -281,7 +281,8 @@ scanfiles(char *argv[], int cooked __unused)
} else {
#ifndef BOOTSTRAP_CAT
if (in_kernel_copy(fd) == -1) {
- if (errno == EINVAL || errno == EBADF)
+ if (errno == EINVAL || errno == EBADF ||
+ errno == EISDIR)
raw_cat(fd);
else
err(1, "stdout");