open.2 - document O_DIRECTORY
authorAlex Hornung <alex@alexhornung.com>
Mon, 30 Jul 2012 14:02:26 +0000 (14:02 +0000)
committerAlex Hornung <alex@alexhornung.com>
Mon, 30 Jul 2012 14:04:32 +0000 (14:04 +0000)
lib/libc/sys/open.2

index 2e0c634..63eb916 100644 (file)
@@ -33,7 +33,7 @@
 .\" $FreeBSD: src/lib/libc/sys/open.2,v 1.11.2.9 2001/12/14 18:34:01 ru Exp $
 .\" $DragonFly: src/lib/libc/sys/open.2,v 1.3 2005/07/29 23:16:04 hsu Exp $
 .\"
-.Dd July 24, 2009
+.Dd July 31, 2012
 .Dt OPEN 2
 .Os
 .Sh NAME
@@ -119,6 +119,7 @@ O_EXLOCK    atomically obtain an exclusive lock
 O_DIRECT       eliminate or reduce cache effects
 O_FSYNC                synchronous writes
 O_NOFOLLOW     do not follow symlinks
+O_DIRECTORY    error if file is not a directory
 .Ed
 .Pp
 Opening a file with
@@ -193,6 +194,13 @@ If it cannot avoid caching the data,
 it will minimize the impact the data has on the cache.
 Use of this flag can drastically reduce performance if not used with care.
 .Pp
+.Dv O_DIRECTORY
+may be used to ensure the resulting file descriptor refers to a directory.
+This flag can be used to prevent applications with elevated privileges
+from opening files which are even unsafe to open with
+.Dv O_RDONLY ,
+such as device nodes.
+.Pp
 If successful,
 .Fn open
 and
@@ -235,7 +243,9 @@ argument is not an absolute path and the
 .Fa fd
 argument is neither
 .Dv AT_FDCWD
-nor a file descriptor associated with a directory.
+nor a file descriptor associated with a directory or
+.Dv O_DIRECTORY
+is specified and the file is not a directory.
 .It Bq Er ENAMETOOLONG
 A component of a pathname exceeded 255 characters,
 or an entire path name exceeded 1023 characters.