mirror of
https://github.com/veracrypt/VeraCrypt
synced 2024-11-23 19:43:27 +01:00
Linux: fix linker type confusion that was causing crash.
The class AdminPasswordRequestHandler was defined in several places in the same namespace and the linker was picking up one definition for constructor and the other one when calling virtual method. Now we use different named for different implementations.
This commit is contained in:
parent
bb67a22ac4
commit
1ee93df3b4
@ -37,6 +37,32 @@
|
|||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
|
class AdminPasswordGUIRequestHandler : public GetStringFunctor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual void operator() (string &passwordStr)
|
||||||
|
{
|
||||||
|
|
||||||
|
wxString sValue;
|
||||||
|
if (Gui->GetWaitDialog())
|
||||||
|
{
|
||||||
|
Gui->GetWaitDialog()->RequestAdminPassword(sValue);
|
||||||
|
if (sValue.IsEmpty())
|
||||||
|
throw UserAbort (SRC_POS);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wxPasswordEntryDialog dialog (Gui->GetActiveWindow(), LangString["LINUX_ADMIN_PW_QUERY"], LangString["LINUX_ADMIN_PW_QUERY_TITLE"]);
|
||||||
|
if (dialog.ShowModal() != wxID_OK)
|
||||||
|
throw UserAbort (SRC_POS);
|
||||||
|
sValue = dialog.GetValue();
|
||||||
|
}
|
||||||
|
wstring wPassword (sValue); // A copy of the password is created here by wxWidgets, which cannot be erased
|
||||||
|
finally_do_arg (wstring *, &wPassword, { StringConverter::Erase (*finally_arg); });
|
||||||
|
|
||||||
|
StringConverter::ToSingle (wPassword, passwordStr);
|
||||||
|
}
|
||||||
|
};
|
||||||
#ifdef TC_MACOSX
|
#ifdef TC_MACOSX
|
||||||
int GraphicUserInterface::g_customIdCmdV = 0;
|
int GraphicUserInterface::g_customIdCmdV = 0;
|
||||||
int GraphicUserInterface::g_customIdCmdA = 0;
|
int GraphicUserInterface::g_customIdCmdA = 0;
|
||||||
@ -452,33 +478,7 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
shared_ptr <GetStringFunctor> GraphicUserInterface::GetAdminPasswordRequestHandler ()
|
shared_ptr <GetStringFunctor> GraphicUserInterface::GetAdminPasswordRequestHandler ()
|
||||||
{
|
{
|
||||||
class AdminPasswordRequestHandler : public GetStringFunctor
|
return shared_ptr <GetStringFunctor> (new AdminPasswordGUIRequestHandler);
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual void operator() (string &passwordStr)
|
|
||||||
{
|
|
||||||
|
|
||||||
wxString sValue;
|
|
||||||
if (Gui->GetWaitDialog())
|
|
||||||
{
|
|
||||||
Gui->GetWaitDialog()->RequestAdminPassword(sValue);
|
|
||||||
if (sValue.IsEmpty())
|
|
||||||
throw UserAbort (SRC_POS);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wxPasswordEntryDialog dialog (Gui->GetActiveWindow(), LangString["LINUX_ADMIN_PW_QUERY"], LangString["LINUX_ADMIN_PW_QUERY_TITLE"]);
|
|
||||||
if (dialog.ShowModal() != wxID_OK)
|
|
||||||
throw UserAbort (SRC_POS);
|
|
||||||
sValue = dialog.GetValue();
|
|
||||||
}
|
|
||||||
wstring wPassword (sValue); // A copy of the password is created here by wxWidgets, which cannot be erased
|
|
||||||
finally_do_arg (wstring *, &wPassword, { StringConverter::Erase (*finally_arg); });
|
|
||||||
|
|
||||||
StringConverter::ToSingle (wPassword, passwordStr);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return shared_ptr <GetStringFunctor> (new AdminPasswordRequestHandler);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int GraphicUserInterface::GetCharHeight (wxWindow *window) const
|
int GraphicUserInterface::GetCharHeight (wxWindow *window) const
|
||||||
|
@ -30,10 +30,10 @@
|
|||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
class AdminPasswordRequestHandler : public GetStringFunctor
|
class AdminPasswordTextRequestHandler : public GetStringFunctor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AdminPasswordRequestHandler (TextUserInterface *userInterface) : UI (userInterface) { }
|
AdminPasswordTextRequestHandler (TextUserInterface *userInterface) : UI (userInterface) { }
|
||||||
virtual void operator() (string &passwordStr)
|
virtual void operator() (string &passwordStr)
|
||||||
{
|
{
|
||||||
UI->ShowString (_("Enter your user password or administrator password: "));
|
UI->ShowString (_("Enter your user password or administrator password: "));
|
||||||
@ -1116,7 +1116,7 @@ namespace VeraCrypt
|
|||||||
|
|
||||||
shared_ptr <GetStringFunctor> TextUserInterface::GetAdminPasswordRequestHandler ()
|
shared_ptr <GetStringFunctor> TextUserInterface::GetAdminPasswordRequestHandler ()
|
||||||
{
|
{
|
||||||
return shared_ptr <GetStringFunctor> (new AdminPasswordRequestHandler (this));
|
return shared_ptr <GetStringFunctor> (new AdminPasswordTextRequestHandler (this));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextUserInterface::ImportTokenKeyfiles () const
|
void TextUserInterface::ImportTokenKeyfiles () const
|
||||||
|
@ -19,11 +19,11 @@
|
|||||||
|
|
||||||
namespace VeraCrypt
|
namespace VeraCrypt
|
||||||
{
|
{
|
||||||
class AdminPasswordRequestHandler;
|
class AdminPasswordTextRequestHandler;
|
||||||
class TextUserInterface : public UserInterface
|
class TextUserInterface : public UserInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
friend class AdminPasswordRequestHandler;
|
friend class AdminPasswordTextRequestHandler;
|
||||||
TextUserInterface ();
|
TextUserInterface ();
|
||||||
virtual ~TextUserInterface ();
|
virtual ~TextUserInterface ();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user