Title: [185513] trunk/Source/WebKit2
Revision
185513
Author
[email protected]
Date
2015-06-12 10:43:31 -0700 (Fri, 12 Jun 2015)

Log Message

Network Cache: Use SHA1 for header checksum
https://bugs.webkit.org/show_bug.cgi?id=145928

Reviewed by Chris Dumez.

Use SHA1 everywhere for consistency and robustness.

* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::bodyPathForKey):
(WebKit::NetworkCache::RecordMetaData::RecordMetaData):
(WebKit::NetworkCache::decodeRecordMetaData):
(WebKit::NetworkCache::decodeRecordHeader):
(WebKit::NetworkCache::encodeRecordMetaData):
(WebKit::NetworkCache::Storage::encodeRecord):
(WebKit::NetworkCache::hashData): Deleted.

    This was the last user of 32 bit hashes in cache code.

* NetworkProcess/cache/NetworkCacheStorage.h:

    Also bump the cache version number as recent changes have changed the format.
    Old caches would transition fine but this makes it easier to identify which version user has.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (185512 => 185513)


--- trunk/Source/WebKit2/ChangeLog	2015-06-12 17:10:07 UTC (rev 185512)
+++ trunk/Source/WebKit2/ChangeLog	2015-06-12 17:43:31 UTC (rev 185513)
@@ -1,3 +1,28 @@
+2015-06-12  Antti Koivisto  <[email protected]>
+
+        Network Cache: Use SHA1 for header checksum
+        https://bugs.webkit.org/show_bug.cgi?id=145928
+
+        Reviewed by Chris Dumez.
+
+        Use SHA1 everywhere for consistency and robustness.
+
+        * NetworkProcess/cache/NetworkCacheStorage.cpp:
+        (WebKit::NetworkCache::Storage::bodyPathForKey):
+        (WebKit::NetworkCache::RecordMetaData::RecordMetaData):
+        (WebKit::NetworkCache::decodeRecordMetaData):
+        (WebKit::NetworkCache::decodeRecordHeader):
+        (WebKit::NetworkCache::encodeRecordMetaData):
+        (WebKit::NetworkCache::Storage::encodeRecord):
+        (WebKit::NetworkCache::hashData): Deleted.
+
+            This was the last user of 32 bit hashes in cache code.
+
+        * NetworkProcess/cache/NetworkCacheStorage.h:
+
+            Also bump the cache version number as recent changes have changed the format.
+            Old caches would transition fine but this makes it easier to identify which version user has.
+
 2015-06-12  Simon Fraser  <[email protected]>
 
         [iOS WK2] Video with reflection crashes WebKit and Safari

Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp (185512 => 185513)


--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp	2015-06-12 17:10:07 UTC (rev 185512)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp	2015-06-12 17:43:31 UTC (rev 185513)
@@ -32,7 +32,6 @@
 #include "NetworkCacheCoders.h"
 #include "NetworkCacheFileSystem.h"
 #include "NetworkCacheIOChannel.h"
-#include <wtf/PageBlock.h>
 #include <wtf/RandomNumber.h>
 #include <wtf/RunLoop.h>
 #include <wtf/text/CString.h>
@@ -272,16 +271,6 @@
     return bodyPathForRecordPath(recordPathForKey(key));
 }
 
-static unsigned hashData(const Data& data)
-{
-    StringHasher hasher;
-    data.apply([&hasher](const uint8_t* data, size_t size) {
-        hasher.addCharacters(data, size);
-        return true;
-    });
-    return hasher.hash();
-}
-
 struct RecordMetaData {
     RecordMetaData() { }
     explicit RecordMetaData(const Key& key)
@@ -293,12 +282,14 @@
     Key key;
     // FIXME: Add encoder/decoder for time_point.
     std::chrono::milliseconds epochRelativeTimeStamp;
-    unsigned headerChecksum;
-    uint64_t headerOffset;
+    SHA1::Digest headerHash;
     uint64_t headerSize;
     SHA1::Digest bodyHash;
     uint64_t bodySize;
     bool isBodyInline;
+
+    // Not encoded as a field. Header starts immediately after meta data.
+    uint64_t headerOffset;
 };
 
 static bool decodeRecordMetaData(RecordMetaData& metaData, const Data& fileData)
@@ -312,7 +303,7 @@
             return false;
         if (!decoder.decode(metaData.epochRelativeTimeStamp))
             return false;
-        if (!decoder.decode(metaData.headerChecksum))
+        if (!decoder.decode(metaData.headerHash))
             return false;
         if (!decoder.decode(metaData.headerSize))
             return false;
@@ -344,7 +335,7 @@
     }
 
     headerData = fileData.subrange(metaData.headerOffset, metaData.headerSize);
-    if (metaData.headerChecksum != hashData(headerData)) {
+    if (metaData.headerHash != computeSHA1(headerData)) {
         LOG(NetworkCacheStorage, "(NetworkProcess) header checksum mismatch");
         return false;
     }
@@ -394,7 +385,7 @@
     encoder << metaData.cacheStorageVersion;
     encoder << metaData.key;
     encoder << metaData.epochRelativeTimeStamp;
-    encoder << metaData.headerChecksum;
+    encoder << metaData.headerHash;
     encoder << metaData.headerSize;
     encoder << metaData.bodyHash;
     encoder << metaData.bodySize;
@@ -436,7 +427,7 @@
 
     RecordMetaData metaData(record.key);
     metaData.epochRelativeTimeStamp = std::chrono::duration_cast<std::chrono::milliseconds>(record.timeStamp.time_since_epoch());
-    metaData.headerChecksum = hashData(record.header);
+    metaData.headerHash = computeSHA1(record.header);
     metaData.headerSize = record.header.size();
     metaData.bodyHash = blob ? blob.value().hash : computeSHA1(record.body);
     metaData.bodySize = record.body.size();

Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h (185512 => 185513)


--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h	2015-06-12 17:10:07 UTC (rev 185512)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h	2015-06-12 17:43:31 UTC (rev 185513)
@@ -84,7 +84,7 @@
     size_t capacity() const { return m_capacity; }
     size_t approximateSize() const;
 
-    static const unsigned version = 3;
+    static const unsigned version = 4;
 
     String basePath() const;
     String versionPath() const;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to