[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