forked from mirrors/gecko-dev
bug 1513458 - update diagnostic assertions to only assert in content processes r=valentin
Differential Revision: https://phabricator.services.mozilla.com/D20411 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
672f93b031
commit
4b76f8a9eb
1 changed files with 71 additions and 44 deletions
|
|
@ -245,12 +245,17 @@ TransportSecurityInfo::Write(nsIObjectOutputStream* aStream) {
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
#define CHILD_DIAGNOSTIC_ASSERT(condition, message) \
|
||||
if (XRE_GetProcessType() == GeckoProcessType_Content) { \
|
||||
MOZ_DIAGNOSTIC_ASSERT(condition, message); \
|
||||
}
|
||||
|
||||
// This is for backward compatability to be able to read nsISSLStatus
|
||||
// serialized object.
|
||||
nsresult TransportSecurityInfo::ReadSSLStatus(nsIObjectInputStream* aStream) {
|
||||
bool nsISSLStatusPresent;
|
||||
nsresult rv = aStream->ReadBoolean(&nsISSLStatusPresent);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!nsISSLStatusPresent) {
|
||||
return NS_OK;
|
||||
|
|
@ -260,10 +265,10 @@ nsresult TransportSecurityInfo::ReadSSLStatus(nsIObjectInputStream* aStream) {
|
|||
nsCID cid;
|
||||
nsIID iid;
|
||||
rv = aStream->ReadID(&cid);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadID(&iid);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
static const nsIID nsSSLStatusIID = {
|
||||
|
|
@ -272,25 +277,25 @@ nsresult TransportSecurityInfo::ReadSSLStatus(nsIObjectInputStream* aStream) {
|
|||
0x498a,
|
||||
{0xb8, 0x89, 0x7c, 0x79, 0xcf, 0x28, 0xfe, 0xe8}};
|
||||
if (!iid.Equals(nsSSLStatusIID)) {
|
||||
MOZ_DIAGNOSTIC_ASSERT(false, "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(false, "Deserialization should not fail");
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsISupports> cert;
|
||||
rv = aStream->ReadObject(true, getter_AddRefs(cert));
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (cert) {
|
||||
mServerCert = do_QueryInterface(cert);
|
||||
if (!mServerCert) {
|
||||
MOZ_DIAGNOSTIC_ASSERT(false, "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(false, "Deserialization should not fail");
|
||||
return NS_NOINTERFACE;
|
||||
}
|
||||
}
|
||||
|
||||
rv = aStream->Read16(&mCipherSuite);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// The code below is a workaround to allow serializing new fields
|
||||
|
|
@ -301,50 +306,53 @@ nsresult TransportSecurityInfo::ReadSSLStatus(nsIObjectInputStream* aStream) {
|
|||
// These bits are now used for stream versioning.
|
||||
uint16_t protocolVersionAndStreamFormatVersion;
|
||||
rv = aStream->Read16(&protocolVersionAndStreamFormatVersion);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mProtocolVersion = protocolVersionAndStreamFormatVersion & 0xFF;
|
||||
const uint8_t streamFormatVersion =
|
||||
(protocolVersionAndStreamFormatVersion >> 8) & 0xFF;
|
||||
|
||||
rv = aStream->ReadBoolean(&mIsDomainMismatch);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadBoolean(&mIsNotValidAtThisTime);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadBoolean(&mIsUntrusted);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadBoolean(&mIsEV);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = aStream->ReadBoolean(&mHasIsEVStatus);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadBoolean(&mHaveCipherSuiteAndProtocol);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadBoolean(&mHaveCertErrorBits);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// Added in version 1 (see bug 1305289).
|
||||
if (streamFormatVersion >= 1) {
|
||||
rv = aStream->Read16(&mCertificateTransparencyStatus);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
// Added in version 2 (see bug 1304923).
|
||||
if (streamFormatVersion >= 2) {
|
||||
rv = aStream->ReadCString(mKeaGroup);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = aStream->ReadCString(mSignatureSchemeName);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
|
|
@ -353,7 +361,8 @@ nsresult TransportSecurityInfo::ReadSSLStatus(nsIObjectInputStream* aStream) {
|
|||
nsCOMPtr<nsISupports> succeededCertChainSupports;
|
||||
rv = NS_ReadOptionalObject(aStream, true,
|
||||
getter_AddRefs(succeededCertChainSupports));
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
|
@ -363,7 +372,8 @@ nsresult TransportSecurityInfo::ReadSSLStatus(nsIObjectInputStream* aStream) {
|
|||
nsCOMPtr<nsISupports> failedCertChainSupports;
|
||||
rv = NS_ReadOptionalObject(aStream, true,
|
||||
getter_AddRefs(failedCertChainSupports));
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
|
@ -375,39 +385,39 @@ NS_IMETHODIMP
|
|||
TransportSecurityInfo::Read(nsIObjectInputStream* aStream) {
|
||||
nsID id;
|
||||
nsresult rv = aStream->ReadID(&id);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
if (!id.Equals(kTransportSecurityInfoMagic)) {
|
||||
MOZ_DIAGNOSTIC_ASSERT(false, "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(false, "Deserialization should not fail");
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
MutexAutoLock lock(mMutex);
|
||||
|
||||
rv = aStream->Read32(&mSecurityState);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
// mSubRequestsBrokenSecurity was removed in bug 748809
|
||||
uint32_t unusedSubRequestsBrokenSecurity;
|
||||
rv = aStream->Read32(&unusedSubRequestsBrokenSecurity);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
// mSubRequestsNoSecurity was removed in bug 748809
|
||||
uint32_t unusedSubRequestsNoSecurity;
|
||||
rv = aStream->Read32(&unusedSubRequestsNoSecurity);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
uint32_t errorCode;
|
||||
rv = aStream->Read32(&errorCode);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
|
@ -424,7 +434,7 @@ TransportSecurityInfo::Read(nsIObjectInputStream* aStream) {
|
|||
// serialization.
|
||||
nsAutoString serVersion;
|
||||
rv = aStream->ReadString(serVersion);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
|
@ -433,69 +443,84 @@ TransportSecurityInfo::Read(nsIObjectInputStream* aStream) {
|
|||
if (!serVersion.EqualsASCII("1")) {
|
||||
// nsISSLStatus may be present
|
||||
rv = ReadSSLStatus(aStream);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
} else {
|
||||
nsCOMPtr<nsISupports> cert;
|
||||
rv = NS_ReadOptionalObject(aStream, true, getter_AddRefs(cert));
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (cert != nullptr) {
|
||||
mServerCert = do_QueryInterface(cert);
|
||||
if (!mServerCert) {
|
||||
MOZ_DIAGNOSTIC_ASSERT(false, "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(false, "Deserialization should not fail");
|
||||
return NS_NOINTERFACE;
|
||||
}
|
||||
}
|
||||
|
||||
rv = aStream->Read16(&mCipherSuite);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = aStream->Read16(&mProtocolVersion);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = aStream->ReadBoolean(&mIsDomainMismatch);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadBoolean(&mIsNotValidAtThisTime);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadBoolean(&mIsUntrusted);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadBoolean(&mIsEV);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = aStream->ReadBoolean(&mHasIsEVStatus);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadBoolean(&mHaveCipherSuiteAndProtocol);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = aStream->ReadBoolean(&mHaveCertErrorBits);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = aStream->Read16(&mCertificateTransparencyStatus);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = aStream->ReadCString(mKeaGroup);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = aStream->ReadCString(mSignatureSchemeName);
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsISupports> succeededCertChainSupports;
|
||||
rv = NS_ReadOptionalObject(aStream, true,
|
||||
getter_AddRefs(succeededCertChainSupports));
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv),
|
||||
"Deserialization should not fail");
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
|
@ -506,7 +531,7 @@ TransportSecurityInfo::Read(nsIObjectInputStream* aStream) {
|
|||
nsCOMPtr<nsISupports> failedCertChainSupports;
|
||||
rv = NS_ReadOptionalObject(aStream, true,
|
||||
getter_AddRefs(failedCertChainSupports));
|
||||
MOZ_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
CHILD_DIAGNOSTIC_ASSERT(NS_SUCCEEDED(rv), "Deserialization should not fail");
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
|
@ -515,6 +540,8 @@ TransportSecurityInfo::Read(nsIObjectInputStream* aStream) {
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
#undef CHILD_DIAGNOSTIC_ASSERT
|
||||
|
||||
NS_IMETHODIMP
|
||||
TransportSecurityInfo::GetInterfaces(nsTArray<nsIID>& array) {
|
||||
array.Clear();
|
||||
|
|
|
|||
Loading…
Reference in a new issue