+
+ basename_path_copy = strdup(path);
+ if (basename_path_copy == NULL) {
+ perror("apply_default_acl (strdup)");
+ result = ACL_ERROR;
+ goto cleanup;
+ }
+ char* child = basename(basename_path_copy);
+
+ /* Just kidding, if the path is "." or "..", then dirname will do
+ * the wrong thing and give us "." as its parent, too. So, we handle
+ * those as special cases. We use "child" instead of "path" here to
+ * catch things like "./" and "../"
+ */
+ bool path_is_dots = strcmp(child, ".") == 0 || strcmp(child, "..") == 0;
+ char dots_parent[6] = "../";
+ if (path_is_dots) {
+ /* We know that "child" contains no more than two characters here, and
+ using strncat to enforce that belief keeps clang-tidy happy. */
+ parent = strncat(dots_parent, child, 2);
+ }
+