mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-23 00:47:31 +09:00
Bug 516464 - Remove passwords from cache when password manager contents are changed to prevent stale password attempts.
Tag #1273
This commit is contained in:
parent
d0d5ec75d5
commit
86d4e9d3a6
4 changed files with 54 additions and 10 deletions
|
|
@ -49,6 +49,7 @@
|
|||
#include "nsIMsgFilter.h"
|
||||
#include "nsIArray.h"
|
||||
#include "nsArrayUtils.h"
|
||||
#include "nsIObserverService.h"
|
||||
|
||||
#define PORT_NOT_SET -1
|
||||
|
||||
|
|
@ -64,12 +65,51 @@ nsMsgIncomingServer::nsMsgIncomingServer():
|
|||
{
|
||||
}
|
||||
|
||||
nsresult nsMsgIncomingServer::Init()
|
||||
{
|
||||
// We need to know when the password manager changes.
|
||||
nsCOMPtr<nsIObserverService> observerService =
|
||||
mozilla::services::GetObserverService();
|
||||
NS_ENSURE_TRUE(observerService, NS_ERROR_UNEXPECTED);
|
||||
|
||||
observerService->AddObserver(this, "passwordmgr-storage-changed", false);
|
||||
observerService->AddObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID, false);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsMsgIncomingServer::~nsMsgIncomingServer()
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(nsMsgIncomingServer, nsIMsgIncomingServer,
|
||||
nsISupportsWeakReference)
|
||||
nsISupportsWeakReference, nsIObserver)
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMsgIncomingServer::Observe(nsISupports *aSubject, const char* aTopic,
|
||||
const char16_t *aData)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
// When the state of the password manager changes we need to clear the
|
||||
// password from the cache in case the user just removed it.
|
||||
if (strcmp(aTopic, "passwordmgr-storage-changed") == 0)
|
||||
{
|
||||
rv = ForgetSessionPassword();
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
}
|
||||
else if (strcmp(aTopic, NS_XPCOM_SHUTDOWN_OBSERVER_ID) == 0)
|
||||
{
|
||||
// Now remove ourselves from the observer service as well.
|
||||
nsCOMPtr<nsIObserverService> observerService =
|
||||
mozilla::services::GetObserverService();
|
||||
NS_ENSURE_TRUE(observerService, NS_ERROR_UNEXPECTED);
|
||||
|
||||
observerService->RemoveObserver(this, "passwordmgr-storage-changed");
|
||||
observerService->RemoveObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMsgIncomingServer::SetServerBusy(bool aServerBusy)
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#include "nsIMsgFilterPlugin.h"
|
||||
#include "nsDataHashtable.h"
|
||||
#include "nsIMsgPluggableStore.h"
|
||||
#include "nsIObserver.h"
|
||||
|
||||
class nsIMsgFolderCache;
|
||||
class nsIMsgProtocolInfo;
|
||||
|
|
@ -36,13 +37,16 @@ class nsIMsgProtocolInfo;
|
|||
#define IMETHOD_VISIBILITY NS_VISIBILITY_DEFAULT
|
||||
|
||||
class NS_MSG_BASE nsMsgIncomingServer : public nsIMsgIncomingServer,
|
||||
public nsSupportsWeakReference
|
||||
public nsSupportsWeakReference,
|
||||
public nsIObserver
|
||||
{
|
||||
public:
|
||||
nsMsgIncomingServer();
|
||||
nsresult Init();
|
||||
|
||||
NS_DECL_THREADSAFE_ISUPPORTS
|
||||
NS_DECL_NSIMSGINCOMINGSERVER
|
||||
NS_DECL_NSIOBSERVER
|
||||
|
||||
protected:
|
||||
virtual ~nsMsgIncomingServer();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue