Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
pkg.readdir: fix reading the root directory
Baptiste Daroussin committed 1 year ago
commit 6d88461cd80cf4ba685c6522a909d7ebfd6be002
parent 353c3c9
2 files changed +7 -3
modified libpkg/lua.c
@@ -542,7 +542,11 @@ lua_readdir(lua_State *L)
	if (*path == '/') {
		lua_getglobal(L, "rootfd");
		int rootfd = lua_tointeger(L, -1);
-
		fd = openat(rootfd, path +1, O_DIRECTORY);
+
		if (strlen(path) > 1) {
+
			fd = openat(rootfd, path +1, O_DIRECTORY);
+
		} else {
+
			fd = dup(rootfd);
+
		}
	} else {
		fd = open(path, O_DIRECTORY);
	}
modified tests/lib/lua.c
@@ -76,9 +76,9 @@ ATF_TC_BODY(readdir, tc)
	lua_getglobal(L, "res");
	ATF_REQUIRE(lua_isnil(L, -1));

-
	ATF_REQUIRE(luaL_dostring(L, "res = test.readdir('/')") == 0);
+
	ATF_REQUIRE(luaL_dostring(L, "res = test.readdir(\"/\")") == 0);
	lua_getglobal(L, "res");
-
	ATF_REQUIRE(lua_isnil(L, -1));
+
	ATF_REQUIRE(!lua_isnil(L, -1));

	close(open("testfile", O_CREAT|O_TRUNC, 0644));
	ATF_REQUIRE(luaL_dostring(L, "res = test.readdir(\".\")\n gr = #res\n") == 0);