diff options
author | Jertzukka <Jertzukka@gmail.com> | 2023-06-10 02:07:27 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-10 01:07:27 +0200 |
commit | 0ffd61a55c22eb1b5f66752a7953659046c04430 (patch) | |
tree | 382769bce59c4f2750235df09fed5b94de2ef486 | |
parent | 9ad75aaa0fa46dfa097feaf269b352c6b7c114dd (diff) | |
download | VeraCrypt-0ffd61a55c22eb1b5f66752a7953659046c04430.tar.gz VeraCrypt-0ffd61a55c22eb1b5f66752a7953659046c04430.zip |
Linux/FreeBSD: Fix privilege escalation prompts being ignored (#1100)
Currently if you fail the privilege escalation prompt, the second
one and consecutively every second will be ignored. This is because
if we do not --use-dummy-sudo-password and are on Linux/FreeBSD,
we will be prompted for password twice for one evaluation in the
while(!ElevatedServiceAvailable) loop.
For the fix, we make sure that we run the prompt only once for each
case.
-rw-r--r-- | src/Core/Unix/CoreService.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/Core/Unix/CoreService.cpp b/src/Core/Unix/CoreService.cpp index f05d8569..e543652a 100644 --- a/src/Core/Unix/CoreService.cpp +++ b/src/Core/Unix/CoreService.cpp @@ -303,12 +303,11 @@ namespace VeraCrypt // We also use the old way if the user is forcing the use of dummy password for sudo #if defined(TC_LINUX ) || defined (TC_FREEBSD) - + bool authCheckDone = false; if (!Core->GetUseDummySudoPassword ()) { std::vector<char> buffer(128, 0); std::string result; - bool authCheckDone = false; FILE* pipe = popen("sudo -n uptime 2>&1 | grep 'load average' | wc -l", "r"); // We redirect stderr to stdout (2>&1) to be able to catch the result of the command if (pipe) @@ -354,7 +353,10 @@ namespace VeraCrypt } request.FastElevation = false; - (*AdminPasswordCallback) (request.AdminPassword); +#if defined(TC_LINUX ) || defined (TC_FREEBSD) + if(!authCheckDone) +#endif + (*AdminPasswordCallback) (request.AdminPassword); } } } |