X-Git-Url: http://gitweb.michael.orlitzky.com/?p=apply-default-acl.git;a=blobdiff_plain;f=src%2Flibadacl.c;fp=src%2Flibadacl.c;h=911e69ae3022736eab1f30e1e463b7bd18188e73;hp=a43afa5c1b203a63e7d905296a56719fa0a43d49;hb=1ad6e96c6b6d1ac60ce3f5e39e674d157fae53ad;hpb=17dbc4afd60b7caa743539f87e64d8e0021cc3c9 diff --git a/src/libadacl.c b/src/libadacl.c index a43afa5..911e69a 100644 --- a/src/libadacl.c +++ b/src/libadacl.c @@ -1016,6 +1016,9 @@ int apply_default_acl(const char* path, bool recursive) { if (strcmp(path, ".") == 0 && strcmp(parent, ".") == 0) { parent_fd = safe_open("..", O_DIRECTORY | O_NOFOLLOW); } + else if (strcmp(path, "..") == 0 && strcmp(parent, ".") == 0) { + parent_fd = safe_open("../..", O_DIRECTORY | O_NOFOLLOW); + } else { parent_fd = safe_open(parent, O_DIRECTORY | O_NOFOLLOW); } @@ -1050,6 +1053,9 @@ int apply_default_acl(const char* path, bool recursive) { if (strcmp(path, ".") == 0 && strcmp(parent, ".") == 0) { fd = open(".", O_NOFOLLOW); } + else if (strcmp(path, "..") == 0 && strcmp(parent, ".") == 0) { + fd = open("..", O_NOFOLLOW); + } else { fd = openat(parent_fd, basename(basename_path_copy), O_NOFOLLOW); }