From 3cab91e8d7c0333696d8b60a96801ccf0e07a8bc Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Tue, 4 May 2021 14:32:00 +0200 Subject: [PATCH] LibCore: Let Account::from_* succeed if /etc/shadow is unreadable This previously worked and was broken by 302f9798e. --- Userland/Libraries/LibCore/Account.cpp | 28 +++++++++----------------- 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/Userland/Libraries/LibCore/Account.cpp b/Userland/Libraries/LibCore/Account.cpp index 92d03fb5a0..8f56e53193 100644 --- a/Userland/Libraries/LibCore/Account.cpp +++ b/Userland/Libraries/LibCore/Account.cpp @@ -74,18 +74,14 @@ Result Account::from_name(const char* username) return String(strerror(errno)); } -#ifndef AK_OS_MACOS - auto* spwd = getspnam(username); - if (!spwd) { - if (errno == 0) - return String("No such user"); - - return String(strerror(errno)); - } -#else spwd spwd_dummy = {}; spwd_dummy.sp_namp = const_cast(username); spwd_dummy.sp_pwdp = const_cast(""); +#ifndef AK_OS_MACOS + auto* spwd = getspnam(username); + if (!spwd) + spwd = &spwd_dummy; +#else auto* spwd = &spwd_dummy; #endif return from_passwd(*pwd, *spwd); @@ -101,18 +97,14 @@ Result Account::from_uid(uid_t uid) return String(strerror(errno)); } -#ifndef AK_OS_MACOS - auto* spwd = getspnam(pwd->pw_name); - if (!spwd) { - if (errno == 0) - return String("No such user"); - - return String(strerror(errno)); - } -#else spwd spwd_dummy = {}; spwd_dummy.sp_namp = pwd->pw_name; spwd_dummy.sp_pwdp = const_cast(""); +#ifndef AK_OS_MACOS + auto* spwd = getspnam(pwd->pw_name); + if (!spwd) + spwd = &spwd_dummy; +#else auto* spwd = &spwd_dummy; #endif return from_passwd(*pwd, *spwd);