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:
parent
45f85e85fb
commit
be20465f5e
@ -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
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user