From: Steven Barth Date: Mon, 29 Sep 2008 22:12:56 +0000 (+0000) Subject: Work around OpenWRT / Busybox shadow password quirks X-Git-Tag: 0.9.0~1184 X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=8138c8475d9573b834ca8dcba1b8f37647d61212 Work around OpenWRT / Busybox shadow password quirks --- diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index 4bf294678..0bf92e9da 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -438,18 +438,18 @@ function user.checkpasswd(username, password) if account then local pwd = account.passwd - if pwd == "!" then - return true - elseif pwd == "x" then - pwd = nil + local shadowpw + if #pwd == 1 then for l in io.lines("/etc/shadow") do - pwd = l:match("^%s:([^:]+)" % username) - if pwd then + shadowpw = l:match("^%s:([^:]+)" % username) + if shadowpw then + pwd = shadowpw break end end - if not pwd then - return nil, "No shadow password for " .. username + + if pwd == "!" then + return true end end