]> granicus.if.org Git - sudo/commitdiff
Use O_SEARCH on systems without O_PATH if present. It can be used
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 18 Jan 2016 19:38:41 +0000 (12:38 -0700)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 18 Jan 2016 19:38:41 +0000 (12:38 -0700)
for a similar purpose.

src/sudo_edit.c

index d22f109fbda1152210c4b5c77dfd62c31d475c71..6e71624239045c99ce6b59f6ce4865c8069a7a05 100644 (file)
@@ -331,16 +331,24 @@ dir_is_writable(int dfd, struct user_details *ud, struct command_details *cd)
 
 /*
  * Directory open flags for use with openat(2).
- * Use O_PATH and O_DIRECTORY where possible.
+ * Use O_PATH/O_SEARCH and O_DIRECTORY where possible.
  */
-#if defined(O_PATH) && defined(O_DIRECTORY)
-# define DIR_OPEN_FLAGS        (O_PATH|O_DIRECTORY)
-#elif defined(O_PATH) && !defined(O_DIRECTORY)
-# define DIR_OPEN_FLAGS        O_PATH
-#elif !defined(O_PATH) && defined(O_DIRECTORY)
-# define DIR_OPEN_FLAGS        (O_RDONLY|O_DIRECTORY)
+#if defined(O_PATH)
+# if defined(O_DIRECTORY)
+#  define DIR_OPEN_FLAGS       (O_PATH|O_DIRECTORY)
+# else
+#  define DIR_OPEN_FLAGS       (O_PATH)
+# endif
+#elif defined(O_SEARCH)
+# if defined(O_DIRECTORY)
+#  define DIR_OPEN_FLAGS       (O_SEARCH|O_DIRECTORY)
+# else
+#  define DIR_OPEN_FLAGS       (O_SEARCH)
+# endif
+#elif defined(O_DIRECTORY)
+# define DIR_OPEN_FLAGS                (O_RDONLY|O_DIRECTORY)
 #else
-# define DIR_OPEN_FLAGS        (O_RDONLY|O_NONBLOCK)
+# define DIR_OPEN_FLAGS                (O_RDONLY|O_NONBLOCK)
 #endif
 
 static int