mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-25 00:27:29 +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
|
// compose factories
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSmtpService)
|
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(nsMsgCompose)
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgComposeParams)
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgComposeParams)
|
||||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgComposeSendListener)
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsMsgComposeSendListener)
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,14 @@
|
||||||
#include "nsILoginManager.h"
|
#include "nsILoginManager.h"
|
||||||
#include "nsIArray.h"
|
#include "nsIArray.h"
|
||||||
#include "nsArrayUtils.h"
|
#include "nsArrayUtils.h"
|
||||||
|
#include "nsIObserverService.h"
|
||||||
|
|
||||||
NS_IMPL_ADDREF(nsSmtpServer)
|
NS_IMPL_ADDREF(nsSmtpServer)
|
||||||
NS_IMPL_RELEASE(nsSmtpServer)
|
NS_IMPL_RELEASE(nsSmtpServer)
|
||||||
NS_INTERFACE_MAP_BEGIN(nsSmtpServer)
|
NS_INTERFACE_MAP_BEGIN(nsSmtpServer)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISmtpServer)
|
NS_INTERFACE_MAP_ENTRY(nsISmtpServer)
|
||||||
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
|
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
|
||||||
|
NS_INTERFACE_MAP_ENTRY(nsIObserver)
|
||||||
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsISmtpServer)
|
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsISmtpServer)
|
||||||
NS_INTERFACE_MAP_END
|
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
|
NS_IMETHODIMP
|
||||||
nsSmtpServer::GetKey(char * *aKey)
|
nsSmtpServer::GetKey(char * *aKey)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -11,15 +11,19 @@
|
||||||
#include "nsISmtpServer.h"
|
#include "nsISmtpServer.h"
|
||||||
#include "nsIPrefBranch.h"
|
#include "nsIPrefBranch.h"
|
||||||
#include "nsWeakReference.h"
|
#include "nsWeakReference.h"
|
||||||
|
#include "nsIObserver.h"
|
||||||
|
|
||||||
class nsSmtpServer : public nsISmtpServer,
|
class nsSmtpServer : public nsISmtpServer,
|
||||||
public nsSupportsWeakReference
|
public nsSupportsWeakReference,
|
||||||
|
public nsIObserver
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
nsSmtpServer();
|
nsSmtpServer();
|
||||||
|
nsresult Init();
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
NS_DECL_NSISMTPSERVER
|
NS_DECL_NSISMTPSERVER
|
||||||
|
NS_DECL_NSIOBSERVER
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual ~nsSmtpServer();
|
virtual ~nsSmtpServer();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue