misc/96191: "cat" can display directory contents
Bjoern Voigt
bjoern at cs.tu-berlin.de
Sun Apr 23 10:20:18 UTC 2006
The following reply was made to PR misc/96191; it has been noted by GNATS.
From: Bjoern Voigt <bjoern at cs.tu-berlin.de>
To: bug-followup at FreeBSD.org
Cc:
Subject: Re: misc/96191: "cat" can display directory contents
Date: Sun, 23 Apr 2006 12:12:46 +0200
I know, that everything is a file on UNIX. But also a system should
prevent a user from falling into a trap. Shell script authors can fall
into a trap if they accidentally work on directories with "cat" and
"cat" returns with exit code 0. I think the Linux' implementation is
better here, but this is my personal opinion.
I looked at the problem more detailed now. I found, that the different
behavior between "cat /etc" on FreeBSD and Linux does not come from the
cat-tools itself. The difference comes from different implementations of
the read(2) system call. Linux's read(2) call refuses to read from
directories.
I tested FreeBSD's "cat" on Linux:
* Linux has no support for 'udom' and does not know the __FBSDID
macro (both is not important here)
* compilation on Linux: gcc -g -o cat2 -DNO_UDOM_SUPPORT
-D'__FBSDID(a)=/**/' cat.c
* The result:
$ ./cat2 /etc
cat2: /etc: Is a directory
As a result also other UNIX tools behave different on Linux and on
FreeBSD. For instance the same version of "bash" behaves different on
Linux and on FreeBSD:
FreeBSD:
$ echo $0; head < /etc
/usr/local/bin/bash
(garbage)
Linux:
echo $0; head < /etc
-bash
head: error reading `standard input': Is a directory
More information about the freebsd-bugs
mailing list