mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-11 02:58:02 -06:00
Linux: simpler and more robust approach to detect active sudo session (#1473)
This commit is contained in:
@@ -305,8 +305,6 @@ namespace VeraCrypt
|
|||||||
bool authCheckDone = false;
|
bool authCheckDone = false;
|
||||||
if (!Core->GetUseDummySudoPassword ())
|
if (!Core->GetUseDummySudoPassword ())
|
||||||
{
|
{
|
||||||
// sudo man page: "If the -l option was specified without a command, sudo, will exit
|
|
||||||
// with a value of 0 if the user is allowed to run sudo, and they authenticated successfully"
|
|
||||||
// We are using -n to avoid prompting the user for a password.
|
// We are using -n to avoid prompting the user for a password.
|
||||||
// We are redirecting stderr to stdout and discarding both to avoid any output.
|
// We are redirecting stderr to stdout and discarding both to avoid any output.
|
||||||
// This approach also works on newer macOS versions (12.0 and later).
|
// This approach also works on newer macOS versions (12.0 and later).
|
||||||
@@ -316,7 +314,7 @@ namespace VeraCrypt
|
|||||||
if (sudoAbsolutePath.empty())
|
if (sudoAbsolutePath.empty())
|
||||||
throw SystemException(SRC_POS, errorMsg);
|
throw SystemException(SRC_POS, errorMsg);
|
||||||
|
|
||||||
std::string popenCommand = sudoAbsolutePath + " -n -l > /dev/null 2>&1"; // We redirect stderr to stdout (2>&1) to be able to catch the result of the command
|
std::string popenCommand = sudoAbsolutePath + " -n true > /dev/null 2>&1"; // We redirect stderr to stdout (2>&1) to be able to catch the result of the command
|
||||||
FILE* pipe = popen(popenCommand.c_str(), "r");
|
FILE* pipe = popen(popenCommand.c_str(), "r");
|
||||||
if (pipe)
|
if (pipe)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user