Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(415)

Unified Diff: content/common/ssl_status_serialization.cc

Issue 1244863003: Attach a SecurityStyle to each request in ResourceLoader (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: split out browser test and use another SpawnedTestServer Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/common/ssl_status_serialization.h ('k') | content/common/ssl_status_serialization_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/ssl_status_serialization.cc
diff --git a/content/common/ssl_status_serialization.cc b/content/common/ssl_status_serialization.cc
index 364dba0538a4cdf6bdc17263e1fca8a663c74b69..26cb1cdc00cc8e2aa6ac9551aa25e715ba453fc8 100644
--- a/content/common/ssl_status_serialization.cc
+++ b/content/common/ssl_status_serialization.cc
@@ -7,24 +7,37 @@
#include "base/logging.h"
#include "base/pickle.h"
+namespace {
+
+// Checks that an integer |security_style| is a valid SecurityStyle enum
+// value. Returns true if valid, false otherwise.
+bool CheckSecurityStyle(int security_style) {
+ switch (security_style) {
+ case content::SECURITY_STYLE_UNKNOWN:
+ case content::SECURITY_STYLE_UNAUTHENTICATED:
+ case content::SECURITY_STYLE_AUTHENTICATION_BROKEN:
+ case content::SECURITY_STYLE_WARNING:
+ case content::SECURITY_STYLE_AUTHENTICATED:
+ return true;
+ }
+ return false;
+}
+
+} // namespace
+
namespace content {
-std::string SerializeSecurityInfo(
- int cert_id,
- net::CertStatus cert_status,
- int security_bits,
- int ssl_connection_status,
- const SignedCertificateTimestampIDStatusList&
- signed_certificate_timestamp_ids) {
+std::string SerializeSecurityInfo(const SSLStatus& ssl_status) {
base::Pickle pickle;
- pickle.WriteInt(cert_id);
- pickle.WriteUInt32(cert_status);
- pickle.WriteInt(security_bits);
- pickle.WriteInt(ssl_connection_status);
- pickle.WriteInt(signed_certificate_timestamp_ids.size());
+ pickle.WriteInt(ssl_status.security_style);
+ pickle.WriteInt(ssl_status.cert_id);
+ pickle.WriteUInt32(ssl_status.cert_status);
+ pickle.WriteInt(ssl_status.security_bits);
+ pickle.WriteInt(ssl_status.connection_status);
+ pickle.WriteInt(ssl_status.signed_certificate_timestamp_ids.size());
for (SignedCertificateTimestampIDStatusList::const_iterator iter =
- signed_certificate_timestamp_ids.begin();
- iter != signed_certificate_timestamp_ids.end(); ++iter) {
+ ssl_status.signed_certificate_timestamp_ids.begin();
+ iter != ssl_status.signed_certificate_timestamp_ids.end(); ++iter) {
pickle.WriteInt(iter->id);
pickle.WriteUInt16(iter->status);
}
@@ -41,8 +54,9 @@ bool DeserializeSecurityInfo(const std::string& state, SSLStatus* ssl_status) {
base::Pickle pickle(state.data(), static_cast<int>(state.size()));
base::PickleIterator iter(pickle);
+ int security_style;
int num_scts_to_read;
- if (!iter.ReadInt(&ssl_status->cert_id) ||
+ if (!iter.ReadInt(&security_style) || !iter.ReadInt(&ssl_status->cert_id) ||
!iter.ReadUInt32(&ssl_status->cert_status) ||
!iter.ReadInt(&ssl_status->security_bits) ||
!iter.ReadInt(&ssl_status->connection_status) ||
@@ -51,6 +65,13 @@ bool DeserializeSecurityInfo(const std::string& state, SSLStatus* ssl_status) {
return false;
}
+ if (!CheckSecurityStyle(security_style)) {
+ *ssl_status = SSLStatus();
+ return false;
+ }
+
+ ssl_status->security_style = static_cast<SecurityStyle>(security_style);
+
// Sanity check |security_bits|: the only allowed negative value is -1.
if (ssl_status->security_bits < -1) {
*ssl_status = SSLStatus();
« no previous file with comments | « content/common/ssl_status_serialization.h ('k') | content/common/ssl_status_serialization_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698