Diff
Modified: trunk/Source/WebKit2/ChangeLog (158387 => 158388)
--- trunk/Source/WebKit2/ChangeLog 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/ChangeLog 2013-10-31 19:50:04 UTC (rev 158388)
@@ -1,3 +1,32 @@
+2013-10-31 Sergio Correia <[email protected]>
+
+ [WK2] Convert SeccompFilters to using unique_ptr instead of OwnPtr/PassOwnPtr
+ https://bugs.webkit.org/show_bug.cgi?id=122883
+
+ Reviewed by Darin Adler.
+
+ * Shared/linux/SeccompFilters/OpenSyscall.cpp:
+ (WebKit::OpenSyscall::createFromOpenatContext):
+ (WebKit::OpenSyscall::createFromCreatContext):
+ (WebKit::OpenSyscall::execute):
+ * Shared/linux/SeccompFilters/OpenSyscall.h:
+ * Shared/linux/SeccompFilters/SeccompBroker.cpp:
+ (WebKit::SIGSYSHandler):
+ (WebKit::SeccompBrokerClient::dispatch):
+ (WebKit::SeccompBroker::runLoop):
+ * Shared/linux/SeccompFilters/SigactionSyscall.cpp:
+ (WebKit::SigactionSyscall::createFromContext):
+ * Shared/linux/SeccompFilters/SigactionSyscall.h:
+ * Shared/linux/SeccompFilters/SigprocmaskSyscall.cpp:
+ (WebKit::SigprocmaskSyscall::createFromContext):
+ * Shared/linux/SeccompFilters/SigprocmaskSyscall.h:
+ * Shared/linux/SeccompFilters/Syscall.cpp:
+ (WebKit::Syscall::createFromContext):
+ (WebKit::Syscall::createFromDecoder):
+ (WebKit::SyscallResult::createFromDecoder):
+ * Shared/linux/SeccompFilters/Syscall.h:
+ * Shared/linux/SeccompFilters/SyscallPolicy.cpp:
+
2013-10-31 Gavin Barraclough <[email protected]>
Change WebPage, WebPageProxy, WebPageCreationParameters to use ViewState
Modified: trunk/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp (158387 => 158388)
--- trunk/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.cpp 2013-10-31 19:50:04 UTC (rev 158388)
@@ -44,9 +44,9 @@
COMPILE_ASSERT(O_WRONLY == 1, O_WRONLY);
COMPILE_ASSERT(O_RDWR == 2, O_RDWR);
-PassOwnPtr<Syscall> OpenSyscall::createFromOpenatContext(mcontext_t* context)
+std::unique_ptr<Syscall> OpenSyscall::createFromOpenatContext(mcontext_t* context)
{
- OwnPtr<OpenSyscall> open = adoptPtr(new OpenSyscall(0));
+ auto open = std::make_unique<OpenSyscall>(nullptr);
open->setFlags(context->gregs[REG_ARG2]);
open->setMode(context->gregs[REG_ARG3]);
@@ -57,7 +57,7 @@
if (path[0] == '/') {
open->setPath(path);
- return open.release();
+ return std::move(open);
}
struct stat pathStat;
@@ -90,19 +90,19 @@
sprintf(&fdPath[size], "/%s", path);
open->setPath(fdPath);
- return open.release();
+ return std::move(open);
}
-PassOwnPtr<Syscall> OpenSyscall::createFromCreatContext(mcontext_t* context)
+std::unique_ptr<Syscall> OpenSyscall::createFromCreatContext(mcontext_t* context)
{
- OpenSyscall* open = new OpenSyscall(0);
+ auto open = std::make_unique<OpenSyscall>(nullptr);
open->setPath(CString(reinterpret_cast<char*>(context->gregs[REG_ARG0])));
open->setFlags(O_CREAT | O_WRONLY | O_TRUNC);
open->setMode(context->gregs[REG_ARG1]);
open->setContext(context);
- return adoptPtr(open);
+ return std::move(open);
}
OpenSyscall::OpenSyscall(mcontext_t* context)
@@ -130,7 +130,7 @@
context()->gregs[REG_SYSCALL] = -openResult->errorNumber();
}
-PassOwnPtr<SyscallResult> OpenSyscall::execute(const SyscallPolicy& policy)
+std::unique_ptr<SyscallResult> OpenSyscall::execute(const SyscallPolicy& policy)
{
if (!strncmp("/proc/self/", m_path.data(), 11)) {
String resolvedSelfPath = ASCIILiteral("/proc/") + String::number(getppid()) + &m_path.data()[10];
@@ -150,7 +150,7 @@
permission = static_cast<SyscallPolicy::Permission>(permission | SyscallPolicy::Write);
if (!policy.hasPermissionForPath(m_path.data(), permission))
- return adoptPtr(new OpenSyscallResult(-1, EACCES));
+ return std::make_unique<OpenSyscallResult>(-1, EACCES);
// Permission granted, execute the syscall. The syscall might still
// fail because of hard permissions enforced by the filesystem and
@@ -158,7 +158,7 @@
int fd = open(m_path.data(), m_flags, m_mode);
int errorNumber = fd == -1 ? errno : 0;
- return adoptPtr(new OpenSyscallResult(fd, errorNumber));
+ return std::make_unique<OpenSyscallResult>(fd, errorNumber);
}
void OpenSyscall::encode(CoreIPC::ArgumentEncoder& encoder) const
Modified: trunk/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.h (158387 => 158388)
--- trunk/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.h 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/Shared/linux/SeccompFilters/OpenSyscall.h 2013-10-31 19:50:04 UTC (rev 158388)
@@ -40,8 +40,8 @@
class OpenSyscall : public Syscall {
public:
- static PassOwnPtr<Syscall> createFromOpenatContext(mcontext_t*);
- static PassOwnPtr<Syscall> createFromCreatContext(mcontext_t*);
+ static std::unique_ptr<Syscall> createFromOpenatContext(mcontext_t*);
+ static std::unique_ptr<Syscall> createFromCreatContext(mcontext_t*);
explicit OpenSyscall(mcontext_t*);
@@ -51,7 +51,7 @@
// Syscall implementation.
virtual void setResult(const SyscallResult*);
- virtual PassOwnPtr<SyscallResult> execute(const SyscallPolicy&);
+ virtual std::unique_ptr<SyscallResult> execute(const SyscallPolicy&);
virtual void encode(CoreIPC::ArgumentEncoder&) const;
virtual bool decode(CoreIPC::ArgumentDecoder*);
Modified: trunk/Source/WebKit2/Shared/linux/SeccompFilters/SeccompBroker.cpp (158387 => 158388)
--- trunk/Source/WebKit2/Shared/linux/SeccompFilters/SeccompBroker.cpp 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/Shared/linux/SeccompFilters/SeccompBroker.cpp 2013-10-31 19:50:04 UTC (rev 158388)
@@ -149,7 +149,7 @@
// syscall locally without sending it to the broker process. In this case,
// we just return. Examples of locally resolved syscalls are the ones
// with cached resources and invalid arguments.
- OwnPtr<Syscall> syscall = Syscall::createFromContext(ucontext);
+ std::unique_ptr<Syscall> syscall = Syscall::createFromContext(ucontext);
if (!syscall)
return;
@@ -220,7 +220,7 @@
m_socketLock.unlock();
auto decoder = std::make_unique<CoreIPC::ArgumentDecoder>((const uint8_t*) buffer, receivedBytes);
- OwnPtr<SyscallResult> result = SyscallResult::createFromDecoder(decoder.get(), fd);
+ std::unique_ptr<SyscallResult> result = SyscallResult::createFromDecoder(decoder.get(), fd);
if (!result)
CRASH();
@@ -325,11 +325,11 @@
exit(receivedBytes ? EXIT_FAILURE : EXIT_SUCCESS);
auto decoder = std::make_unique<CoreIPC::ArgumentDecoder>((const uint8_t*) buffer, receivedBytes);
- OwnPtr<Syscall> syscall = Syscall::createFromDecoder(decoder.get());
+ std::unique_ptr<Syscall> syscall = Syscall::createFromDecoder(decoder.get());
if (!syscall)
exit(EXIT_FAILURE);
- OwnPtr<SyscallResult> result = syscall->execute(m_policy);
+ std::unique_ptr<SyscallResult> result = syscall->execute(m_policy);
if (!result)
exit(EXIT_FAILURE);
Modified: trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigactionSyscall.cpp (158387 => 158388)
--- trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigactionSyscall.cpp 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigactionSyscall.cpp 2013-10-31 19:50:04 UTC (rev 158388)
@@ -32,7 +32,7 @@
namespace WebKit {
-PassOwnPtr<Syscall> SigactionSyscall::createFromContext(mcontext_t* context)
+std::unique_ptr<Syscall> SigactionSyscall::createFromContext(mcontext_t* context)
{
// We just ignore any attempt of installing a handler for SIGSYS since this
// signal is necessary for the sandbox to work.
Modified: trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigactionSyscall.h (158387 => 158388)
--- trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigactionSyscall.h 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigactionSyscall.h 2013-10-31 19:50:04 UTC (rev 158388)
@@ -33,7 +33,7 @@
namespace WebKit {
struct SigactionSyscall {
- static PassOwnPtr<Syscall> createFromContext(mcontext_t*);
+ static std::unique_ptr<Syscall> createFromContext(mcontext_t*);
};
} // namespace WebKit
Modified: trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigprocmaskSyscall.cpp (158387 => 158388)
--- trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigprocmaskSyscall.cpp 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigprocmaskSyscall.cpp 2013-10-31 19:50:04 UTC (rev 158388)
@@ -33,7 +33,7 @@
namespace WebKit {
-PassOwnPtr<Syscall> SigprocmaskSyscall::createFromContext(ucontext_t* ucontext)
+std::unique_ptr<Syscall> SigprocmaskSyscall::createFromContext(ucontext_t* ucontext)
{
// This syscall is never proxied to the broker process and resolved locally.
// What we do here is silently remove SIGSYS from the signal set so no
Modified: trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigprocmaskSyscall.h (158387 => 158388)
--- trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigprocmaskSyscall.h 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/Shared/linux/SeccompFilters/SigprocmaskSyscall.h 2013-10-31 19:50:04 UTC (rev 158388)
@@ -33,7 +33,7 @@
namespace WebKit {
struct SigprocmaskSyscall {
- static PassOwnPtr<Syscall> createFromContext(ucontext_t*);
+ static std::unique_ptr<Syscall> createFromContext(ucontext_t*);
};
} // namespace WebKit
Modified: trunk/Source/WebKit2/Shared/linux/SeccompFilters/Syscall.cpp (158387 => 158388)
--- trunk/Source/WebKit2/Shared/linux/SeccompFilters/Syscall.cpp 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/Shared/linux/SeccompFilters/Syscall.cpp 2013-10-31 19:50:04 UTC (rev 158388)
@@ -36,13 +36,13 @@
namespace WebKit {
-PassOwnPtr<Syscall> Syscall::createFromContext(ucontext_t* ucontext)
+std::unique_ptr<Syscall> Syscall::createFromContext(ucontext_t* ucontext)
{
mcontext_t* mcontext = &ucontext->uc_mcontext;
switch (mcontext->gregs[REG_SYSCALL]) {
case __NR_open:
- return adoptPtr(new OpenSyscall(mcontext));
+ return std::make_unique<OpenSyscall>(mcontext);
case __NR_openat:
return OpenSyscall::createFromOpenatContext(mcontext);
case __NR_creat:
@@ -60,20 +60,20 @@
return nullptr;
}
-PassOwnPtr<Syscall> Syscall::createFromDecoder(CoreIPC::ArgumentDecoder* decoder)
+std::unique_ptr<Syscall> Syscall::createFromDecoder(CoreIPC::ArgumentDecoder* decoder)
{
int type;
if (!decoder->decode(type))
return nullptr;
- OwnPtr<Syscall> syscall;
+ std::unique_ptr<Syscall> syscall;
if (type == __NR_open)
- syscall = adoptPtr(new OpenSyscall(0));
+ syscall = std::make_unique<OpenSyscall>(nullptr);
if (!syscall->decode(decoder))
return nullptr;
- return syscall.release();
+ return syscall;
}
Syscall::Syscall(int type, mcontext_t* context)
@@ -82,20 +82,20 @@
{
}
-PassOwnPtr<SyscallResult> SyscallResult::createFromDecoder(CoreIPC::ArgumentDecoder* decoder, int fd)
+std::unique_ptr<SyscallResult> SyscallResult::createFromDecoder(CoreIPC::ArgumentDecoder* decoder, int fd)
{
int type;
if (!decoder->decode(type))
return nullptr;
- OwnPtr<SyscallResult> result;
+ std::unique_ptr<SyscallResult> result;
if (type == __NR_open)
- result = adoptPtr(new OpenSyscallResult(-1, 0));
+ result = std::make_unique<OpenSyscallResult>(-1, 0);
if (!result->decode(decoder, fd))
return nullptr;
- return result.release();
+ return result;
}
SyscallResult::SyscallResult(int type)
Modified: trunk/Source/WebKit2/Shared/linux/SeccompFilters/Syscall.h (158387 => 158388)
--- trunk/Source/WebKit2/Shared/linux/SeccompFilters/Syscall.h 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/Shared/linux/SeccompFilters/Syscall.h 2013-10-31 19:50:04 UTC (rev 158388)
@@ -47,7 +47,7 @@
#include <signal.h>
#include <sys/types.h>
#include <wtf/Noncopyable.h>
-#include <wtf/PassOwnPtr.h>
+#include <wtf/StdLibExtras.h>
namespace CoreIPC {
class ArgumentDecoder;
@@ -65,8 +65,8 @@
public:
virtual ~Syscall() { }
- static PassOwnPtr<Syscall> createFromContext(ucontext_t*);
- static PassOwnPtr<Syscall> createFromDecoder(CoreIPC::ArgumentDecoder*);
+ static std::unique_ptr<Syscall> createFromContext(ucontext_t*);
+ static std::unique_ptr<Syscall> createFromDecoder(CoreIPC::ArgumentDecoder*);
int type() const { return m_type; }
@@ -74,7 +74,7 @@
mcontext_t* context() const { return m_context; }
virtual void setResult(const SyscallResult*) = 0;
- virtual PassOwnPtr<SyscallResult> execute(const SyscallPolicy&) = 0;
+ virtual std::unique_ptr<SyscallResult> execute(const SyscallPolicy&) = 0;
virtual void encode(CoreIPC::ArgumentEncoder&) const = 0;
virtual bool decode(CoreIPC::ArgumentDecoder*) = 0;
@@ -92,7 +92,7 @@
public:
virtual ~SyscallResult() { }
- static PassOwnPtr<SyscallResult> createFromDecoder(CoreIPC::ArgumentDecoder*, int fd);
+ static std::unique_ptr<SyscallResult> createFromDecoder(CoreIPC::ArgumentDecoder*, int fd);
int type() const { return m_type; }
Modified: trunk/Source/WebKit2/Shared/linux/SeccompFilters/SyscallPolicy.cpp (158387 => 158388)
--- trunk/Source/WebKit2/Shared/linux/SeccompFilters/SyscallPolicy.cpp 2013-10-31 19:31:43 UTC (rev 158387)
+++ trunk/Source/WebKit2/Shared/linux/SeccompFilters/SyscallPolicy.cpp 2013-10-31 19:50:04 UTC (rev 158388)
@@ -34,7 +34,6 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
-#include <wtf/OwnPtr.h>
namespace WebKit {