Index: sandbox/linux/services/yama_unittests.cc |
diff --git a/sandbox/linux/services/yama_unittests.cc b/sandbox/linux/services/yama_unittests.cc |
index 17ef4b40de5a046286296eab9fafb8302e6ac2cb..4722af3369c2820f07d97ed560bec3a6ab6f8786 100644 |
--- a/sandbox/linux/services/yama_unittests.cc |
+++ b/sandbox/linux/services/yama_unittests.cc |
@@ -12,6 +12,8 @@ |
#include "base/bind.h" |
#include "base/compiler_specific.h" |
#include "base/posix/eintr_wrapper.h" |
+#include "base/strings/string_util.h" |
+#include "base/sys_info.h" |
#include "sandbox/linux/services/scoped_process.h" |
#include "sandbox/linux/services/yama.h" |
#include "sandbox/linux/tests/unit_tests.h" |
@@ -20,6 +22,21 @@ |
namespace sandbox { |
namespace { |
+ |
+bool HasLinux32Bug() { |
+#if defined(__i386__) |
+ // On 3.2 kernels, yama doesn't work for 32-bit binaries on 64-bit kernels. |
+ // This is fixed in 3.4. |
+ bool is_kernel_64bit = |
+ base::SysInfo::OperatingSystemArchitecture() == "x86_64"; |
+ bool is_linux = base::SysInfo::OperatingSystemName() == "Linux"; |
+ bool is_3_dot_2 = StartsWithASCII( |
+ base::SysInfo::OperatingSystemVersion(), "3.2", /*case_sensitive=*/false); |
+ if (is_kernel_64bit && is_linux && is_3_dot_2) |
+ return true; |
+#endif // defined(__i386__) |
+ return false; |
+} |
bool CanPtrace(pid_t pid) { |
int ret; |