[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

jianli at chromium.org jianli at chromium.org
Wed Dec 22 15:12:53 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 9f6abd223ee17e455fe7aa3ccada3ce2516df3e2
Author: jianli at chromium.org <jianli at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Oct 29 01:12:31 2010 +0000

    [chromium] UUID generation does not work in Linux that has sandbox
    turned on
    https://bugs.webkit.org/show_bug.cgi?id=48571
    
    Reviewed by Dmitry Titov.
    
    This is because we cannot access /proc when sandbox is on. The fix is to
    use random numbers to construct UUID.
    
    * platform/UUID.cpp:
    (WebCore::createCanonicalUUIDString):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@70830 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 4027407..bfd4c2c 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,17 @@
+2010-10-28  Jian Li  <jianli at chromium.org>
+
+        Reviewed by Dmitry Titov.
+
+        [chromium] UUID generation does not work in Linux that has sandbox
+        turned on
+        https://bugs.webkit.org/show_bug.cgi?id=48571
+
+        This is because we cannot access /proc when sandbox is on. The fix is to
+        use random numbers to construct UUID.
+
+        * platform/UUID.cpp:
+        (WebCore::createCanonicalUUIDString):
+
 2010-10-28  Jia Pu  <jpu at apple.com>
 
         Reviewed by Dan Bernstein.
diff --git a/WebCore/platform/UUID.cpp b/WebCore/platform/UUID.cpp
index fdbf601..5208bee 100644
--- a/WebCore/platform/UUID.cpp
+++ b/WebCore/platform/UUID.cpp
@@ -44,8 +44,11 @@
 #endif
 #elif OS(DARWIN)
 #include <CoreFoundation/CoreFoundation.h>
-#elif OS(LINUX)
+#elif OS(LINUX) && !PLATFORM(CHROMIUM)
 #include <stdio.h>
+#elif OS(LINUX) && PLATFORM(CHROMIUM)
+#include <wtf/RandomNumber.h>
+#include <wtf/text/StringBuilder.h>
 #endif
 
 namespace WebCore {
@@ -80,7 +83,8 @@ String createCanonicalUUIDString()
     String canonicalUuidStr = uuidStr.lower(); // make it lower.
     ASSERT(canonicalUuidStr[uuidVersionIdentifierIndex] == uuidVersionRequired);
     return canonicalUuidStr;
-#elif OS(LINUX)
+#elif OS(LINUX) && !PLATFORM(CHROMIUM)
+    // This does not work for the linux system that turns on sandbox.
     FILE* fptr = fopen("/proc/sys/kernel/random/uuid", "r");
     if (!fptr)
         return String();
@@ -92,10 +96,29 @@ String createCanonicalUUIDString()
     String canonicalUuidStr = String(uuidStr).lower(); // make it lower.
     ASSERT(canonicalUuidStr[uuidVersionIdentifierIndex] == uuidVersionRequired);
     return canonicalUuidStr;
+#elif OS(LINUX) && PLATFORM(CHROMIUM)
+    unsigned randomData[4];
+    for (size_t i = 0; i < sizeof(randomData) / sizeof(randomData[0]); ++i)
+        randomData[i] = static_cast<unsigned>(randomNumber() * (std::numeric_limits<unsigned>::max() + 1.0));
+
+    // Format as Version 4 UUID.
+    StringBuilder builder;
+    builder.append(String::format("%08x", randomData[0]));
+    builder.append("-");
+    builder.append(String::format("%04x", randomData[1] >> 16));
+    builder.append("-4");
+    builder.append(String::format("%03x", randomData[1] & 0x00000fff));
+    builder.append("-");
+    builder.append(String::format("%x", (randomData[2] >> 30) | 0x8)); // Condense this byte to 8, 9, a, and b.
+    builder.append(String::format("%03x", (randomData[2] >> 16) & 0x00000fff));
+    builder.append("-");
+    builder.append(String::format("%04x", randomData[2] & 0x0000ffff));
+    builder.append(String::format("%08x", randomData[3]));
+    return builder.toString();
 #else
     notImplemented();
     return String();
-#endif    
+#endif
 }
 
 }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list