mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-07 08:18:41 +09:00
Bug 1461106 - Remove SMTP password from cache when deleted from password manager to prevent stale connection attempts.
Tag #1273
This commit is contained in:
parent
86d4e9d3a6
commit
52ff1c8f6b
3 changed files with 46 additions and 2 deletions
|
|
@ -556,7 +556,7 @@ NS_DEFINE_NAMED_CID(NS_BAYESIANFILTER_CID);
|
|||
// compose factories
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSmtpService)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSmtpServer)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSmtpServer, Init)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgCompose)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgComposeParams)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgComposeSendListener)
|
||||
|
|
|
|||
|
|
@ -17,12 +17,14 @@
|
|||
#include "nsILoginManager.h"
|
||||
#include "nsIArray.h"
|
||||
#include "nsArrayUtils.h"
|
||||
#include "nsIObserverService.h"
|
||||
|
||||
NS_IMPL_ADDREF(nsSmtpServer)
|
||||
NS_IMPL_RELEASE(nsSmtpServer)
|
||||
NS_INTERFACE_MAP_BEGIN(nsSmtpServer)
|
||||
NS_INTERFACE_MAP_ENTRY(nsISmtpServer)
|
||||
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIObserver)
|
||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsISmtpServer)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
|
|
@ -37,6 +39,44 @@ nsSmtpServer::~nsSmtpServer()
|
|||
{
|
||||
}
|
||||
|
||||
nsresult nsSmtpServer::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;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsSmtpServer::Observe(nsISupports *aSubject, const char* aTopic,
|
||||
const char16_t *aData)
|
||||
{
|
||||
// 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)
|
||||
{
|
||||
m_password.Truncate();
|
||||
}
|
||||
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
|
||||
nsSmtpServer::GetKey(char * *aKey)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -11,15 +11,19 @@
|
|||
#include "nsISmtpServer.h"
|
||||
#include "nsIPrefBranch.h"
|
||||
#include "nsWeakReference.h"
|
||||
#include "nsIObserver.h"
|
||||
|
||||
class nsSmtpServer : public nsISmtpServer,
|
||||
public nsSupportsWeakReference
|
||||
public nsSupportsWeakReference,
|
||||
public nsIObserver
|
||||
{
|
||||
public:
|
||||
nsSmtpServer();
|
||||
nsresult Init();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSISMTPSERVER
|
||||
NS_DECL_NSIOBSERVER
|
||||
|
||||
private:
|
||||
virtual ~nsSmtpServer();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue