Forget entered master password before trying to change it.
This makes sure the user always has to input current master password before he is allowed to change it.
This commit is contained in:
parent
b7477fbe53
commit
fb564a461e
2 changed files with 17 additions and 7 deletions
|
@ -117,6 +117,17 @@ const gboolean master_password_is_correct(const gchar *input)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
void master_password_forget()
|
||||
{
|
||||
/* If master password is currently in memory (entered by user),
|
||||
* get rid of it. User will have to enter the new one again. */
|
||||
if (_master_password != NULL) {
|
||||
memset(_master_password, 0, strlen(_master_password));
|
||||
g_free(_master_password);
|
||||
}
|
||||
_master_password = NULL;
|
||||
}
|
||||
|
||||
void master_password_change(const gchar *newp)
|
||||
{
|
||||
gchar *pwd, *newpwd;
|
||||
|
@ -124,6 +135,10 @@ void master_password_change(const gchar *newp)
|
|||
GList *cur;
|
||||
PrefsAccount *acc;
|
||||
|
||||
/* Make sure the user has to enter the master password before
|
||||
* being able to change it. */
|
||||
master_password_forget();
|
||||
|
||||
oldp = master_password();
|
||||
g_return_if_fail(oldp != NULL);
|
||||
|
||||
|
@ -190,13 +205,7 @@ void master_password_change(const gchar *newp)
|
|||
}
|
||||
}
|
||||
|
||||
/* If master password is currently in memory (entered by user),
|
||||
* get rid of it. User will have to enter the new one again. */
|
||||
if (_master_password != NULL) {
|
||||
memset(_master_password, 0, strlen(_master_password));
|
||||
g_free(_master_password);
|
||||
}
|
||||
_master_password = NULL;
|
||||
master_password_forget();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#ifndef PASSWORD_CRYPTO_OLD
|
||||
const gboolean master_password_is_set();
|
||||
const gboolean master_password_is_correct(const gchar *input);
|
||||
void master_password_forget();
|
||||
void master_password_change(const gchar *newp);
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue