]> gitweb.michael.orlitzky.com - apply-default-acl.git/blobdiff - src/libadacl.c
safe_open_ex: add a comment about why O_PATH doesn't work.
[apply-default-acl.git] / src / libadacl.c
index d4e99aa2e48106ab51c806afc719f7890d2240c9..01cb4adaea9ebef67d9358b6ac1b5555dc452500 100644 (file)
@@ -40,6 +40,9 @@
  *   open a file descriptor in a symlink-safe way when combined with
  *   the @c O_NOFOLLOW flag.
  *
+ * The @c O_PATH flag is not used because we want to fail upon
+ * encountering any symlinks.
+ *
  * @param at_fd
  *   A file descriptor relative to which @c pathname will be opened.
  *
@@ -160,6 +163,11 @@ int safe_open(const char* pathname, int flags) {
   }
 
   int fd = open("/", flags);
+  if (fd == OPEN_ERROR) {
+    perror("safe_open (open)");
+    return OPEN_ERROR;
+  }
+
   if (strcmp(abspath, "/") == 0) {
     return fd;
   }