| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "sandbox/linux/bpf_dsl/bpf_dsl.h" | 5 #include "sandbox/linux/bpf_dsl/bpf_dsl.h" |
| 6 | 6 |
| 7 #include <errno.h> | 7 #include <errno.h> |
| 8 | 8 |
| 9 #include <limits> | 9 #include <limits> |
| 10 | 10 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 private: | 83 private: |
| 84 virtual ~IfThenResultExprImpl() {} | 84 virtual ~IfThenResultExprImpl() {} |
| 85 | 85 |
| 86 BoolExpr cond_; | 86 BoolExpr cond_; |
| 87 ResultExpr then_result_; | 87 ResultExpr then_result_; |
| 88 ResultExpr else_result_; | 88 ResultExpr else_result_; |
| 89 | 89 |
| 90 DISALLOW_COPY_AND_ASSIGN(IfThenResultExprImpl); | 90 DISALLOW_COPY_AND_ASSIGN(IfThenResultExprImpl); |
| 91 }; | 91 }; |
| 92 | 92 |
| 93 class ConstBoolExprImpl : public internal::BoolExprImpl { |
| 94 public: |
| 95 ConstBoolExprImpl(bool value) : value_(value) {} |
| 96 |
| 97 virtual ErrorCode Compile(SandboxBPF* sb, |
| 98 ErrorCode true_ec, |
| 99 ErrorCode false_ec) const OVERRIDE { |
| 100 return value_ ? true_ec : false_ec; |
| 101 } |
| 102 |
| 103 private: |
| 104 virtual ~ConstBoolExprImpl() {} |
| 105 |
| 106 bool value_; |
| 107 |
| 108 DISALLOW_COPY_AND_ASSIGN(ConstBoolExprImpl); |
| 109 }; |
| 110 |
| 93 class PrimitiveBoolExprImpl : public internal::BoolExprImpl { | 111 class PrimitiveBoolExprImpl : public internal::BoolExprImpl { |
| 94 public: | 112 public: |
| 95 PrimitiveBoolExprImpl(int argno, | 113 PrimitiveBoolExprImpl(int argno, |
| 96 ErrorCode::ArgType is_32bit, | 114 ErrorCode::ArgType is_32bit, |
| 97 uint64_t mask, | 115 uint64_t mask, |
| 98 uint64_t value) | 116 uint64_t value) |
| 99 : argno_(argno), is_32bit_(is_32bit), mask_(mask), value_(value) {} | 117 : argno_(argno), is_32bit_(is_32bit), mask_(mask), value_(value) {} |
| 100 | 118 |
| 101 virtual ErrorCode Compile(SandboxBPF* sb, | 119 virtual ErrorCode Compile(SandboxBPF* sb, |
| 102 ErrorCode true_ec, | 120 ErrorCode true_ec, |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 } | 225 } |
| 208 | 226 |
| 209 ResultExpr Error(int err) { | 227 ResultExpr Error(int err) { |
| 210 return ResultExpr(new const ErrorResultExprImpl(err)); | 228 return ResultExpr(new const ErrorResultExprImpl(err)); |
| 211 } | 229 } |
| 212 | 230 |
| 213 ResultExpr Trap(Trap::TrapFnc trap_func, void* aux) { | 231 ResultExpr Trap(Trap::TrapFnc trap_func, void* aux) { |
| 214 return ResultExpr(new const TrapResultExprImpl(trap_func, aux)); | 232 return ResultExpr(new const TrapResultExprImpl(trap_func, aux)); |
| 215 } | 233 } |
| 216 | 234 |
| 235 BoolExpr BoolConst(bool value) { |
| 236 return BoolExpr(new const ConstBoolExprImpl(value)); |
| 237 } |
| 238 |
| 217 BoolExpr operator!(const BoolExpr& cond) { | 239 BoolExpr operator!(const BoolExpr& cond) { |
| 218 return BoolExpr(new const NegateBoolExprImpl(cond)); | 240 return BoolExpr(new const NegateBoolExprImpl(cond)); |
| 219 } | 241 } |
| 220 | 242 |
| 221 BoolExpr operator&&(const BoolExpr& lhs, const BoolExpr& rhs) { | 243 BoolExpr operator&&(const BoolExpr& lhs, const BoolExpr& rhs) { |
| 222 return BoolExpr(new const AndBoolExprImpl(lhs, rhs)); | 244 return BoolExpr(new const AndBoolExprImpl(lhs, rhs)); |
| 223 } | 245 } |
| 224 | 246 |
| 225 BoolExpr operator||(const BoolExpr& lhs, const BoolExpr& rhs) { | 247 BoolExpr operator||(const BoolExpr& lhs, const BoolExpr& rhs) { |
| 226 return BoolExpr(new const OrBoolExprImpl(lhs, rhs)); | 248 return BoolExpr(new const OrBoolExprImpl(lhs, rhs)); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 ErrorCode SandboxBPFDSLPolicy::InvalidSyscall(SandboxBPF* sb) const { | 310 ErrorCode SandboxBPFDSLPolicy::InvalidSyscall(SandboxBPF* sb) const { |
| 289 return InvalidSyscall()->Compile(sb); | 311 return InvalidSyscall()->Compile(sb); |
| 290 } | 312 } |
| 291 | 313 |
| 292 ResultExpr SandboxBPFDSLPolicy::Trap(Trap::TrapFnc trap_func, void* aux) { | 314 ResultExpr SandboxBPFDSLPolicy::Trap(Trap::TrapFnc trap_func, void* aux) { |
| 293 return bpf_dsl::Trap(trap_func, aux); | 315 return bpf_dsl::Trap(trap_func, aux); |
| 294 } | 316 } |
| 295 | 317 |
| 296 } // namespace bpf_dsl | 318 } // namespace bpf_dsl |
| 297 } // namespace sandbox | 319 } // namespace sandbox |
| OLD | NEW |