mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 13:51:41 +00:00
Bug 1265164 - Always use nsCOMPtrs with getNSSDialogs(). r=keeler
MozReview-Commit-ID: 430uuWHIZjC --HG-- extra : rebase_source : 3192e40558ac36a3a8bf6ff3c1399be1196f8dcb
This commit is contained in:
parent
d42d57aa97
commit
fc68a083a3
@ -4,21 +4,23 @@
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "nsCertPicker.h"
|
||||
#include "pkix/pkixtypes.h"
|
||||
#include "nsMemory.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsXPIDLString.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsNSSComponent.h"
|
||||
#include "nsNSSCertificate.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsICertPickDialogs.h"
|
||||
#include "nsNSSShutDown.h"
|
||||
#include "nsNSSCertHelper.h"
|
||||
#include "nsNSSHelper.h"
|
||||
#include "ScopedNSSTypes.h"
|
||||
|
||||
#include "ScopedNSSTypes.h"
|
||||
#include "cert.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsICertPickDialogs.h"
|
||||
#include "nsIInterfaceRequestor.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsMemory.h"
|
||||
#include "nsNSSCertHelper.h"
|
||||
#include "nsNSSCertificate.h"
|
||||
#include "nsNSSComponent.h"
|
||||
#include "nsNSSHelper.h"
|
||||
#include "nsNSSShutDown.h"
|
||||
#include "nsReadableUtils.h"
|
||||
#include "nsString.h"
|
||||
#include "pkix/pkixtypes.h"
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
@ -164,18 +166,15 @@ NS_IMETHODIMP nsCertPicker::PickByUsage(nsIInterfaceRequestor *ctx,
|
||||
}
|
||||
|
||||
if (CertsToUse) {
|
||||
nsICertPickDialogs *dialogs = nullptr;
|
||||
rv = getNSSDialogs((void**)&dialogs,
|
||||
NS_GET_IID(nsICertPickDialogs),
|
||||
NS_CERTPICKDIALOGS_CONTRACTID);
|
||||
nsCOMPtr<nsICertPickDialogs> dialogs;
|
||||
rv = getNSSDialogs(getter_AddRefs(dialogs), NS_GET_IID(nsICertPickDialogs),
|
||||
NS_CERTPICKDIALOGS_CONTRACTID);
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
// Show the cert picker dialog and get the index of the selected cert.
|
||||
rv = dialogs->PickCertificate(ctx, (const char16_t**)certNicknameList,
|
||||
(const char16_t**)certDetailsList,
|
||||
CertsToUse, &selectedIndex, canceled);
|
||||
|
||||
NS_RELEASE(dialogs);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -299,7 +299,7 @@ GetSlotWithMechanism(uint32_t aMechanism, nsIInterfaceRequestor* m_ctx,
|
||||
{
|
||||
PK11SlotList * slotList = nullptr;
|
||||
char16_t** tokenNameList = nullptr;
|
||||
nsITokenDialogs * dialogs;
|
||||
nsCOMPtr<nsITokenDialogs> dialogs;
|
||||
char16_t *unicodeTokenChosen;
|
||||
PK11SlotListElement *slotElement, *tmpSlot;
|
||||
uint32_t numSlots = 0, i = 0;
|
||||
@ -350,12 +350,13 @@ GetSlotWithMechanism(uint32_t aMechanism, nsIInterfaceRequestor* m_ctx,
|
||||
}
|
||||
}
|
||||
|
||||
/* Throw up the token list dialog and get back the token */
|
||||
rv = getNSSDialogs((void**)&dialogs,
|
||||
NS_GET_IID(nsITokenDialogs),
|
||||
NS_TOKENDIALOGS_CONTRACTID);
|
||||
// Throw up the token list dialog and get back the token.
|
||||
rv = getNSSDialogs(getter_AddRefs(dialogs), NS_GET_IID(nsITokenDialogs),
|
||||
NS_TOKENDIALOGS_CONTRACTID);
|
||||
|
||||
if (NS_FAILED(rv)) goto loser;
|
||||
if (NS_FAILED(rv)) {
|
||||
goto loser;
|
||||
}
|
||||
|
||||
if (!tokenNameList || !*tokenNameList) {
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
@ -363,7 +364,6 @@ GetSlotWithMechanism(uint32_t aMechanism, nsIInterfaceRequestor* m_ctx,
|
||||
rv = dialogs->ChooseToken(m_ctx, (const char16_t**)tokenNameList,
|
||||
numSlots, &unicodeTokenChosen, &canceled);
|
||||
}
|
||||
NS_RELEASE(dialogs);
|
||||
if (NS_FAILED(rv)) goto loser;
|
||||
|
||||
if (canceled) { rv = NS_ERROR_NOT_AVAILABLE; goto loser; }
|
||||
@ -476,7 +476,7 @@ nsKeygenFormProcessor::GetPublicKey(const nsAString& aValue,
|
||||
SECItem signedItem;
|
||||
CERTPublicKeyAndChallenge pkac;
|
||||
pkac.challenge.data = nullptr;
|
||||
nsIGeneratingKeypairInfoDialogs * dialogs;
|
||||
nsCOMPtr<nsIGeneratingKeypairInfoDialogs> dialogs;
|
||||
nsKeygenThread *KeygenRunnable = 0;
|
||||
nsCOMPtr<nsIKeygenThread> runnable;
|
||||
|
||||
@ -583,7 +583,7 @@ nsKeygenFormProcessor::GetPublicKey(const nsAString& aValue,
|
||||
goto loser;
|
||||
}
|
||||
|
||||
rv = getNSSDialogs((void**)&dialogs,
|
||||
rv = getNSSDialogs(getter_AddRefs(dialogs),
|
||||
NS_GET_IID(nsIGeneratingKeypairInfoDialogs),
|
||||
NS_GENERATINGKEYPAIRINFODIALOGS_CONTRACTID);
|
||||
|
||||
@ -601,14 +601,12 @@ nsKeygenFormProcessor::GetPublicKey(const nsAString& aValue,
|
||||
keyGenMechanism, params, m_ctx );
|
||||
|
||||
runnable = do_QueryInterface(KeygenRunnable);
|
||||
|
||||
if (runnable) {
|
||||
rv = dialogs->DisplayGeneratingKeypairInfo(m_ctx, runnable);
|
||||
// We call join on the thread so we can be sure that no
|
||||
// simultaneous access to the passed parameters will happen.
|
||||
KeygenRunnable->Join();
|
||||
|
||||
NS_RELEASE(dialogs);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
PK11SlotInfo *used_slot = nullptr;
|
||||
rv = KeygenRunnable->ConsumeResult(&used_slot, &privateKey, &publicKey);
|
||||
|
@ -4,12 +4,17 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef _NSKEYGENHANDLER_H_
|
||||
#define _NSKEYGENHANDLER_H_
|
||||
// Form Processor
|
||||
#ifndef nsKeygenHandler_h
|
||||
#define nsKeygenHandler_h
|
||||
|
||||
#include "keythi.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsError.h"
|
||||
#include "nsIFormProcessor.h"
|
||||
#include "nsTArray.h"
|
||||
#include "nsIInterfaceRequestor.h"
|
||||
#include "nsNSSShutDown.h"
|
||||
#include "nsTArray.h"
|
||||
#include "secmodt.h"
|
||||
|
||||
nsresult GetSlotWithMechanism(uint32_t mechanism,
|
||||
nsIInterfaceRequestor* ctx,
|
||||
@ -73,4 +78,4 @@ private:
|
||||
SECKeySizeChoiceInfo mSECKeySizeChoiceList[number_of_key_size_choices];
|
||||
};
|
||||
|
||||
#endif //_NSKEYGENHANDLER_H_
|
||||
#endif // nsKeygenHandler_h
|
||||
|
@ -674,9 +674,9 @@ ShowProtectedAuthPrompt(PK11SlotInfo* slot, nsIInterfaceRequestor *ir)
|
||||
char* protAuthRetVal = nullptr;
|
||||
|
||||
// Get protected auth dialogs
|
||||
nsITokenDialogs* dialogs = 0;
|
||||
nsresult nsrv = getNSSDialogs((void**)&dialogs,
|
||||
NS_GET_IID(nsITokenDialogs),
|
||||
nsCOMPtr<nsITokenDialogs> dialogs;
|
||||
nsresult nsrv = getNSSDialogs(getter_AddRefs(dialogs),
|
||||
NS_GET_IID(nsITokenDialogs),
|
||||
NS_TOKENDIALOGS_CONTRACTID);
|
||||
if (NS_SUCCEEDED(nsrv))
|
||||
{
|
||||
@ -710,15 +710,12 @@ ShowProtectedAuthPrompt(PK11SlotInfo* slot, nsIInterfaceRequestor *ir)
|
||||
default:
|
||||
protAuthRetVal = nullptr;
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NS_RELEASE(protectedAuthRunnable);
|
||||
}
|
||||
|
||||
NS_RELEASE(dialogs);
|
||||
}
|
||||
|
||||
return protAuthRetVal;
|
||||
|
@ -2067,28 +2067,33 @@ nsresult
|
||||
setPassword(PK11SlotInfo* slot, nsIInterfaceRequestor* ctx,
|
||||
nsNSSShutDownPreventionLock& /*proofOfLock*/)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
MOZ_ASSERT(slot);
|
||||
MOZ_ASSERT(ctx);
|
||||
NS_ENSURE_ARG_POINTER(slot);
|
||||
NS_ENSURE_ARG_POINTER(ctx);
|
||||
|
||||
if (PK11_NeedUserInit(slot)) {
|
||||
nsITokenPasswordDialogs* dialogs;
|
||||
nsCOMPtr<nsITokenPasswordDialogs> dialogs;
|
||||
nsresult rv = getNSSDialogs(getter_AddRefs(dialogs),
|
||||
NS_GET_IID(nsITokenPasswordDialogs),
|
||||
NS_TOKENPASSWORDSDIALOG_CONTRACTID);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
bool canceled;
|
||||
NS_ConvertUTF8toUTF16 tokenName(PK11_GetTokenName(slot));
|
||||
|
||||
rv = getNSSDialogs((void**)&dialogs,
|
||||
NS_GET_IID(nsITokenPasswordDialogs),
|
||||
NS_TOKENPASSWORDSDIALOG_CONTRACTID);
|
||||
|
||||
if (NS_FAILED(rv)) goto loser;
|
||||
|
||||
rv = dialogs->SetPassword(ctx, tokenName.get(), &canceled);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_RELEASE(dialogs);
|
||||
if (NS_FAILED(rv)) goto loser;
|
||||
|
||||
if (canceled) { rv = NS_ERROR_NOT_AVAILABLE; goto loser; }
|
||||
if (canceled) {
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
}
|
||||
loser:
|
||||
return rv;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
namespace mozilla {
|
||||
|
@ -2249,7 +2249,7 @@ ClientAuthDataRunnable::RunOnTargetThread()
|
||||
|
||||
if (!hasRemembered) {
|
||||
// user selects a cert to present
|
||||
nsIClientAuthDialogs* dialogs = nullptr;
|
||||
nsCOMPtr<nsIClientAuthDialogs> dialogs;
|
||||
int32_t selectedIndex = -1;
|
||||
char16_t** certNicknameList = nullptr;
|
||||
char16_t** certDetailsList = nullptr;
|
||||
@ -2363,9 +2363,9 @@ ClientAuthDataRunnable::RunOnTargetThread()
|
||||
}
|
||||
|
||||
// Throw up the client auth dialog and get back the index of the selected cert
|
||||
nsresult rv = getNSSDialogs((void**)&dialogs,
|
||||
NS_GET_IID(nsIClientAuthDialogs),
|
||||
NS_CLIENTAUTHDIALOGS_CONTRACTID);
|
||||
nsresult rv = getNSSDialogs(getter_AddRefs(dialogs),
|
||||
NS_GET_IID(nsIClientAuthDialogs),
|
||||
NS_CLIENTAUTHDIALOGS_CONTRACTID);
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(CertsToUse, certNicknameList);
|
||||
@ -2379,7 +2379,6 @@ ClientAuthDataRunnable::RunOnTargetThread()
|
||||
(const char16_t**)certDetailsList,
|
||||
CertsToUse, &selectedIndex, &canceled);
|
||||
|
||||
NS_RELEASE(dialogs);
|
||||
NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(CertsToUse, certNicknameList);
|
||||
NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(CertsToUse, certDetailsList);
|
||||
|
||||
|
@ -4,17 +4,18 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef _NSNSSIOLAYER_H
|
||||
#define _NSNSSIOLAYER_H
|
||||
#ifndef nsNSSIOLayer_h
|
||||
#define nsNSSIOLayer_h
|
||||
|
||||
#include "TransportSecurityInfo.h"
|
||||
#include "nsISSLSocketControl.h"
|
||||
#include "mozilla/TimeStamp.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsDataHashtable.h"
|
||||
#include "nsIClientAuthDialogs.h"
|
||||
#include "nsIProxyInfo.h"
|
||||
#include "nsISSLSocketControl.h"
|
||||
#include "nsNSSCertificate.h"
|
||||
#include "nsDataHashtable.h"
|
||||
#include "nsTHashtable.h"
|
||||
#include "mozilla/TimeStamp.h"
|
||||
#include "sslt.h"
|
||||
|
||||
namespace mozilla {
|
||||
@ -262,4 +263,4 @@ nsresult nsSSLIOLayerAddToSocket(int32_t family,
|
||||
nsresult nsSSLIOLayerFreeTLSIntolerantSites();
|
||||
nsresult displayUnknownCertErrorAlert(nsNSSSocketInfo* infoObject, int error);
|
||||
|
||||
#endif /* _NSNSSIOLAYER_H */
|
||||
#endif // nsNSSIOLayer_h
|
||||
|
Loading…
Reference in New Issue
Block a user