Fixed determining the user's homedir: If $HOME and the /etc/passwd entry for the current user contradict each other, now $HOME takes preference over /etc/passwd.

This commit is contained in:
Sebastian Messmer 2020-07-10 17:47:23 -07:00
parent 45f85e85fb
commit be20465f5e
2 changed files with 8 additions and 7 deletions

View File

@ -15,6 +15,7 @@ Version 0.10.3 (unreleased)
---------------
Fixed bugs:
* A comma in the base directory name would make the file system fail to mount, https://github.com/cryfs/cryfs/issues/326
* Fixed determining the user's homedir: If $HOME and the /etc/passwd entry for the current user contradict each other, now $HOME takes preference over /etc/passwd.
Version 0.10.2

View File

@ -9,13 +9,13 @@ using std::string;
#include <pwd.h>
namespace {
bf::path _get_home_directory() {
struct passwd* pwd = getpwuid(getuid());
string homedir;
if (pwd) {
homedir = pwd->pw_dir;
} else {
// try the $HOME environment variable
homedir = getenv("HOME");
string homedir = getenv("HOME");
if (homedir == "") {
// try the /etc/passwd entry
struct passwd* pwd = getpwuid(getuid());
if (pwd) {
homedir = pwd->pw_dir;
}
}
if (homedir == "") {
throw std::runtime_error("Couldn't determine home directory for user");