diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2016-07-06 18:52:05 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-06 18:52:05 -0700 |
commit | 32fa565bafcbdc9a59cde670e785a3392d231e3d (patch) | |
tree | c81833f8179ddcaea781fcf8f4bcff29fde0d90c | |
parent | 5dae3cc01b2ae3049deb2af220740b19436ded1b (diff) | |
parent | e252793b1f87b91ca7da3b10b7a8881025616eee (diff) | |
download | servo-32fa565bafcbdc9a59cde670e785a3392d231e3d.tar.gz servo-32fa565bafcbdc9a59cde670e785a3392d231e3d.zip |
Auto merge of #12289 - nox:slate, r=Ms2ger
Properly check storage size against QUOTA_SIZE_LIMIT (fixes #12247)
<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/12289)
<!-- Reviewable:end -->
-rw-r--r-- | components/net/storage_thread.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/components/net/storage_thread.rs b/components/net/storage_thread.rs index c314dbdd8cd..cc329f08922 100644 --- a/components/net/storage_thread.rs +++ b/components/net/storage_thread.rs @@ -144,12 +144,15 @@ impl StorageManager { value: String) { let origin = self.origin_as_string(url); - let current_total_size = { + let (this_storage_size, other_storage_size) = { let local_data = self.select_data(StorageType::Local); let session_data = self.select_data(StorageType::Session); let local_data_size = local_data.get(&origin).map_or(0, |&(total, _)| total); let session_data_size = session_data.get(&origin).map_or(0, |&(total, _)| total); - local_data_size + session_data_size + match storage_type { + StorageType::Local => (local_data_size, session_data_size), + StorageType::Session => (session_data_size, local_data_size), + } }; let data = self.select_data_mut(storage_type); @@ -158,14 +161,14 @@ impl StorageManager { } let message = data.get_mut(&origin).map(|&mut (ref mut total, ref mut entry)| { - let mut new_total_size = current_total_size + value.as_bytes().len(); + let mut new_total_size = this_storage_size + value.as_bytes().len(); if let Some(old_value) = entry.get(&name) { new_total_size -= old_value.as_bytes().len(); } else { new_total_size += name.as_bytes().len(); } - if new_total_size > QUOTA_SIZE_LIMIT { + if (new_total_size + other_storage_size) > QUOTA_SIZE_LIMIT { return Err(()); } |