diff --git a/src/lua/pwd.lua b/src/lua/pwd.lua index b6de1562f880ae7b4273828d45ec706243a29dd1..ab0229a7249425ad29e2b9d14de52533e3c43f7a 100644 --- a/src/lua/pwd.lua +++ b/src/lua/pwd.lua @@ -112,7 +112,7 @@ local function getgr(gid) if gid == nil then gid = tonumber(ffi.C.getgid()) end - local gr = _getgr(gid) + local gr = type(gid) == 'cdata' and gid or _getgr(gid) if gr == nil then if errno() ~= 0 then error(pwgr_errstr:format('gr', errno(), errno.strerror())) @@ -141,7 +141,7 @@ local function getpw(uid) if uid == nil then uid = tonumber(ffi.C.getuid()) end - local pw = _getpw(uid) + local pw = type(uid) == 'cdata' and uid or _getpw(uid) if pw == nil then if errno() ~= 0 then error(pwgr_errstr:format('pw', errno(), errno.strerror())) @@ -170,7 +170,7 @@ local function getpwall() end break end - table.insert(pws, getpw(pw.pw_uid)) + table.insert(pws, getpw(pw)) end ffi.C.endpwent() return pws @@ -188,7 +188,7 @@ local function getgrall() end break end - table.insert(grs, getpw(gr.gr_gid)) + table.insert(grs, getgr(gr)) end ffi.C.endgrent() return grs @@ -200,12 +200,7 @@ end -- password database is traversed first time. -- -- [1]: https://github.com/systemd/systemd/issues/9585 --- --- It is disabled on FreeBSD due to gh-4428: getpwall() hangs on --- FreeBSD 12. -if jit.os ~= 'BSD' then - pcall(getpwall) -end +pcall(getpwall) return { getpw = getpw, diff --git a/test/app-tap/pwd.skipcond b/test/app-tap/pwd.skipcond deleted file mode 100644 index 7950a5d93b5fd0acc75a1fd9529087de9ddfcaa6..0000000000000000000000000000000000000000 --- a/test/app-tap/pwd.skipcond +++ /dev/null @@ -1,8 +0,0 @@ -import platform - -# Disabled on FreeBSD due to fail #4271: -# Data segment size exceeds process limit -if platform.system() == 'FreeBSD': - self.skip = 1 - -# vim: set ft=python: