Commit Diff


commit - 9b6578d818b4e251ebb1efdeaf441385c713a4f1
commit + eb4304b986b18116e2fe6b1b45f805ec895d451c
blob - 917cd5d8b0d2657829ef7fa395ed2320226cffaa
blob + d1223209f4d236906d280ad91c80f5e0992e0c72
--- lib/path.c
+++ lib/path.c
@@ -130,7 +130,7 @@ got_path_skip_common_ancestor(char **child, const char
 		return got_error(GOT_ERR_BAD_PATH);
 	if (strncmp(parent_abspath, abspath, len_parent) != 0)
 		return got_error(GOT_ERR_BAD_PATH);
-	if (abspath[len_parent] != '/')
+	if (!got_path_is_root_dir(parent_abspath) && abspath[len_parent] != '/')
 		return got_error(GOT_ERR_BAD_PATH);
 	while (abspath[len_parent] == '/')
 		abspath++;
@@ -162,7 +162,7 @@ got_path_is_current_dir(const char *path)
 int
 got_path_is_child(const char *child, const char *parent, size_t parent_len)
 {
-	if (parent_len == 0)
+	if (parent_len == 0 || got_path_is_root_dir(parent))
 		return 1;
 
 	if (strncmp(parent, child, parent_len) != 0)