Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc

Issue 258073008: Linux sandbox: restrict *kill to the current process. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: One nit disappeared :) Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Note: any code in this file MUST be async-signal safe. 5 // Note: any code in this file MUST be async-signal safe.
6 6
7 #include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h" 7 #include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h"
8 8
9 #include <unistd.h> 9 #include <unistd.h>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/posix/eintr_wrapper.h" 12 #include "base/posix/eintr_wrapper.h"
13 #include "build/build_config.h" 13 #include "build/build_config.h"
14 #include "sandbox/linux/seccomp-bpf/sandbox_bpf.h" 14 #include "sandbox/linux/seccomp-bpf/sandbox_bpf.h"
15 15
16 #define SECCOMP_MESSAGE_COMMON_CONTENT "seccomp-bpf failure" 16 #define SECCOMP_MESSAGE_COMMON_CONTENT "seccomp-bpf failure"
17 #define SECCOMP_MESSAGE_CLONE_CONTENT "clone() failure" 17 #define SECCOMP_MESSAGE_CLONE_CONTENT "clone() failure"
18 #define SECCOMP_MESSAGE_PRCTL_CONTENT "prctl() failure" 18 #define SECCOMP_MESSAGE_PRCTL_CONTENT "prctl() failure"
19 #define SECCOMP_MESSAGE_IOCTL_CONTENT "ioctl() failure" 19 #define SECCOMP_MESSAGE_IOCTL_CONTENT "ioctl() failure"
20 #define SECCOMP_MESSAGE_KILL_CONTENT "(tg)kill() failure"
20 21
21 namespace { 22 namespace {
22 23
23 inline bool IsArchitectureX86_64() { 24 inline bool IsArchitectureX86_64() {
24 #if defined(__x86_64__) 25 #if defined(__x86_64__)
25 return true; 26 return true;
26 #else 27 #else
27 return false; 28 return false;
28 #endif 29 #endif
29 } 30 }
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 volatile uint64_t request = args.args[1]; 141 volatile uint64_t request = args.args[1];
141 volatile char* addr = reinterpret_cast<volatile char*>(request & 0xFFFF); 142 volatile char* addr = reinterpret_cast<volatile char*>(request & 0xFFFF);
142 *addr = '\0'; 143 *addr = '\0';
143 // Hit the NULL page if this fails. 144 // Hit the NULL page if this fails.
144 addr = reinterpret_cast<volatile char*>(request & 0xFFF); 145 addr = reinterpret_cast<volatile char*>(request & 0xFFF);
145 *addr = '\0'; 146 *addr = '\0';
146 for (;;) 147 for (;;)
147 _exit(1); 148 _exit(1);
148 } 149 }
149 150
151 intptr_t SIGSYSKillFailure(const struct arch_seccomp_data& args,
152 void* /* aux */) {
153 static const char kSeccompKillError[] =
154 __FILE__":**CRASHING**:" SECCOMP_MESSAGE_KILL_CONTENT "\n";
155 WriteToStdErr(kSeccompKillError, sizeof(kSeccompKillError) - 1);
156 // Make "request" volatile so that we can see it on the stack in a minidump.
157 volatile uint64_t pid = args.args[0];
158 volatile char* addr = reinterpret_cast<volatile char*>(pid & 0xFFF);
159 *addr = '\0';
160 // Hit the NULL page if this fails.
161 addr = reinterpret_cast<volatile char*>(pid & 0xFFF);
162 *addr = '\0';
163 for (;;)
164 _exit(1);
165 }
166
150 const char* GetErrorMessageContentForTests() { 167 const char* GetErrorMessageContentForTests() {
151 return SECCOMP_MESSAGE_COMMON_CONTENT; 168 return SECCOMP_MESSAGE_COMMON_CONTENT;
152 } 169 }
153 170
154 const char* GetCloneErrorMessageContentForTests() { 171 const char* GetCloneErrorMessageContentForTests() {
155 return SECCOMP_MESSAGE_CLONE_CONTENT; 172 return SECCOMP_MESSAGE_CLONE_CONTENT;
156 } 173 }
157 174
158 const char* GetPrctlErrorMessageContentForTests() { 175 const char* GetPrctlErrorMessageContentForTests() {
159 return SECCOMP_MESSAGE_PRCTL_CONTENT; 176 return SECCOMP_MESSAGE_PRCTL_CONTENT;
160 } 177 }
161 178
162 const char* GetIoctlErrorMessageContentForTests() { 179 const char* GetIoctlErrorMessageContentForTests() {
163 return SECCOMP_MESSAGE_IOCTL_CONTENT; 180 return SECCOMP_MESSAGE_IOCTL_CONTENT;
164 } 181 }
165 182
166 } // namespace sandbox. 183 } // namespace sandbox.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698