Title: [158388] trunk/Source/WebKit2
Revision
158388
Author
[email protected]
Date
2013-10-31 12:50:04 -0700 (Thu, 31 Oct 2013)

Log Message

[WK2] Convert SeccompFilters to using unique_ptr instead of OwnPtr/PassOwnPtr
https://bugs.webkit.org/show_bug.cgi?id=122883

Patch by Sergio Correia <[email protected]> on 2013-10-31
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:

Modified Paths

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 {
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to