| Index: sandbox/linux/seccomp/library.cc
|
| ===================================================================
|
| --- sandbox/linux/seccomp/library.cc (revision 43083)
|
| +++ sandbox/linux/seccomp/library.cc (working copy)
|
| @@ -88,7 +88,7 @@
|
| // file. Move the temporarily extended mapping back to where we originally
|
| // found. Make sure to preserve any changes that we might have made since.
|
| Sandbox::SysCalls sys;
|
| - sys.mprotect(image_, 4096, PROT_READ | PROT_WRITE);
|
| + sys.mprotect(image_, 4096, PROT_READ | PROT_WRITE | PROT_EXEC);
|
| if (memcmp(image_, memory_ranges_.rbegin()->second.start, 4096)) {
|
| // Only copy data, if we made any changes in this data. Otherwise there
|
| // is no need to create another modified COW mapping.
|
| @@ -242,7 +242,7 @@
|
| if (image_ == MAP_FAILED) {
|
| image_ = NULL;
|
| } else {
|
| - sys.MMAP(start, 4096, PROT_READ | PROT_WRITE,
|
| + sys.MMAP(start, 4096, PROT_READ | PROT_WRITE | PROT_EXEC,
|
| MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
|
| for (int i = 4096 / sizeof(long); --i;
|
| reinterpret_cast<long *>(start)[i] =
|
| @@ -875,7 +875,7 @@
|
| // Only x86-64 has VSyscalls.
|
| if (maps_->vsyscall()) {
|
| char* copy = maps_->allocNearAddr(maps_->vsyscall(), 0x1000,
|
| - PROT_READ|PROT_WRITE);
|
| + PROT_READ|PROT_WRITE|PROT_EXEC);
|
| char* extraSpace = copy;
|
| int extraLength = 0x1000;
|
| memcpy(copy, maps_->vsyscall(), 0x1000);
|
|
|