script_core 0.2.2 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +41 -45
- data/.travis.yml +2 -1
- data/Gemfile +3 -3
- data/README.md +7 -1
- data/bootstrap.sh +2 -2
- data/ext/enterprise_script_service/libseccomp/.travis.yml +24 -12
- data/ext/enterprise_script_service/libseccomp/CHANGELOG +32 -0
- data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +37 -26
- data/ext/enterprise_script_service/libseccomp/CREDITS +11 -0
- data/ext/enterprise_script_service/libseccomp/README.md +21 -1
- data/ext/enterprise_script_service/libseccomp/configure.ac +13 -8
- data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +6 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +12 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +38 -6
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +53 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_export_bpf.3 +20 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_load.3 +32 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +16 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_alloc.3 +113 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_fd.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_free.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_id_valid.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_receive.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_respond.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +64 -3
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_priority.3 +18 -3
- data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +19 -0
- data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +116 -0
- data/ext/enterprise_script_service/libseccomp/src/.gitignore +2 -0
- data/ext/enterprise_script_service/libseccomp/src/Makefile.am +31 -17
- data/ext/enterprise_script_service/libseccomp/src/api.c +254 -58
- data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch-arm.c +47 -2
- data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch-gperf-generate +40 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-mips.c +41 -4
- data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64.c +41 -4
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +3 -11
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.c +41 -4
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +1 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +3 -3
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.h +29 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.c +606 -8
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.c +31 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.h +22 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +171 -12
- data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +1 -17
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +166 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +1 -20
- data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +8 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +359 -143
- data/ext/enterprise_script_service/libseccomp/src/arch-x32.c +36 -2
- data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +172 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +1 -14
- data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch.c +11 -3
- data/ext/enterprise_script_service/libseccomp/src/arch.h +7 -0
- data/ext/enterprise_script_service/libseccomp/src/db.c +268 -57
- data/ext/enterprise_script_service/libseccomp/src/db.h +16 -2
- data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +503 -148
- data/ext/enterprise_script_service/libseccomp/src/gen_bpf.h +2 -1
- data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +165 -37
- data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +37 -1
- data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +295 -5
- data/ext/enterprise_script_service/libseccomp/src/syscalls.c +56 -0
- data/ext/enterprise_script_service/libseccomp/src/syscalls.csv +470 -0
- data/ext/enterprise_script_service/libseccomp/src/syscalls.h +62 -0
- data/ext/enterprise_script_service/libseccomp/src/syscalls.perf.template +82 -0
- data/ext/enterprise_script_service/libseccomp/src/system.c +196 -16
- data/ext/enterprise_script_service/libseccomp/src/system.h +68 -13
- data/ext/enterprise_script_service/libseccomp/tests/.gitignore +10 -2
- data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +1 -1
- data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +5 -5
- data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +35 -1
- data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -1
- data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +4 -3
- data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +12 -0
- data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.c → 18-sim-basic_allowlist.c} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.py → 18-sim-basic_allowlist.py} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_allowlist.tests +32 -0
- data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.tests +33 -17
- data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.c → 34-sim-basic_denylist.c} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.py → 34-sim-basic_denylist.py} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_denylist.tests +32 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +25 -25
- data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +24 -3
- data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +16 -1
- data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +3 -3
- data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.c +112 -0
- data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.py +60 -0
- data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.c +156 -0
- data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.py +95 -0
- data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.tests +65 -0
- data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.c +128 -0
- data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.py +95 -0
- data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.c +134 -0
- data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.sh +46 -0
- data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.c +90 -0
- data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.py +65 -0
- data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.c +64 -0
- data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.py +46 -0
- data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.c +116 -0
- data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.py +61 -0
- data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +34 -10
- data/ext/enterprise_script_service/libseccomp/tests/regression +10 -3
- data/ext/enterprise_script_service/libseccomp/tests/util.c +3 -3
- data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
- data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -1
- data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +4 -2
- data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +4 -0
- data/ext/enterprise_script_service/libseccomp/tools/util.c +14 -12
- data/ext/enterprise_script_service/libseccomp/tools/util.h +7 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +106 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +51 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +24 -0
- data/ext/enterprise_script_service/mruby/.gitignore +3 -0
- data/ext/enterprise_script_service/mruby/.travis.yml +6 -9
- data/ext/enterprise_script_service/mruby/AUTHORS +1 -0
- data/ext/enterprise_script_service/mruby/Doxyfile +1 -1
- data/ext/enterprise_script_service/mruby/LICENSE +1 -1
- data/ext/enterprise_script_service/mruby/README.md +6 -2
- data/ext/enterprise_script_service/mruby/appveyor.yml +9 -12
- data/ext/enterprise_script_service/mruby/appveyor_config.rb +9 -0
- data/ext/enterprise_script_service/mruby/build_config.rb +6 -6
- data/ext/enterprise_script_service/mruby/doc/guides/compile.md +6 -2
- data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
- data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +4 -8
- data/ext/enterprise_script_service/mruby/doc/limitations.md +10 -10
- data/ext/enterprise_script_service/mruby/doc/opcode.md +108 -95
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_ArduinoDue.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelEdison.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelGalileo.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_RX630.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_chipKITMax32.rb +2 -2
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_dreamcast_shelf.rb +108 -0
- data/ext/enterprise_script_service/mruby/include/mrbconf.h +10 -7
- data/ext/enterprise_script_service/mruby/include/mruby.h +24 -9
- data/ext/enterprise_script_service/mruby/include/mruby/array.h +4 -0
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +11 -2
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +0 -10
- data/ext/enterprise_script_service/mruby/include/mruby/common.h +10 -0
- data/ext/enterprise_script_service/mruby/include/mruby/compile.h +11 -3
- data/ext/enterprise_script_service/mruby/include/mruby/dump.h +1 -17
- data/ext/enterprise_script_service/mruby/include/mruby/irep.h +10 -0
- data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
- data/ext/enterprise_script_service/mruby/include/mruby/khash.h +23 -5
- data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/ops.h +3 -2
- data/ext/enterprise_script_service/mruby/include/mruby/proc.h +13 -8
- data/ext/enterprise_script_service/mruby/include/mruby/string.h +2 -1
- data/ext/enterprise_script_service/mruby/include/mruby/value.h +32 -41
- data/ext/enterprise_script_service/mruby/include/mruby/version.h +4 -4
- data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +2 -30
- data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +21 -46
- data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +9 -0
- data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
- data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +7 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +0 -31
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +5 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +5 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +7 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +24 -21
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +6 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +6 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +76 -48
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +107 -32
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13153 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +13 -15
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +1 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +3 -214
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +1 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +1 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +3 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +7 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +77 -32
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +18 -36
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +324 -122
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +18 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +32 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +57 -49
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +6 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +15 -17
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +9 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +4 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +3 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +113 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +6 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +1 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +1 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +9 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +62 -25
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +5 -23
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +4 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +5 -11
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +1 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +11 -15
- data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
- data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -3
- data/ext/enterprise_script_service/mruby/src/array.c +25 -11
- data/ext/enterprise_script_service/mruby/src/backtrace.c +2 -2
- data/ext/enterprise_script_service/mruby/src/class.c +48 -32
- data/ext/enterprise_script_service/mruby/src/codedump.c +4 -0
- data/ext/enterprise_script_service/mruby/src/debug.c +8 -5
- data/ext/enterprise_script_service/mruby/src/dump.c +3 -65
- data/ext/enterprise_script_service/mruby/src/error.c +58 -7
- data/ext/enterprise_script_service/mruby/src/etc.c +13 -5
- data/ext/enterprise_script_service/mruby/src/fmt_fp.c +98 -21
- data/ext/enterprise_script_service/mruby/src/gc.c +15 -280
- data/ext/enterprise_script_service/mruby/src/hash.c +13 -21
- data/ext/enterprise_script_service/mruby/src/kernel.c +6 -9
- data/ext/enterprise_script_service/mruby/src/load.c +56 -30
- data/ext/enterprise_script_service/mruby/src/numeric.c +50 -70
- data/ext/enterprise_script_service/mruby/src/object.c +23 -5
- data/ext/enterprise_script_service/mruby/src/print.c +27 -3
- data/ext/enterprise_script_service/mruby/src/proc.c +26 -7
- data/ext/enterprise_script_service/mruby/src/range.c +4 -12
- data/ext/enterprise_script_service/mruby/src/state.c +34 -11
- data/ext/enterprise_script_service/mruby/src/string.c +93 -56
- data/ext/enterprise_script_service/mruby/src/symbol.c +13 -12
- data/ext/enterprise_script_service/mruby/src/vm.c +48 -53
- data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +19 -22
- data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +1 -1
- data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
- data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +3 -3
- data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +6 -6
- data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +8 -8
- data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
- data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
- data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
- data/ext/enterprise_script_service/mruby/test/t/kernel.rb +15 -24
- data/ext/enterprise_script_service/mruby/travis_config.rb +0 -14
- data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
- data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
- data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
- data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
- data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
- data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
- data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
- data/ext/enterprise_script_service/msgpack/README.md +3 -2
- data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
- data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
- data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
- data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
- data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
- data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
- data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
- data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
- data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
- data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
- data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
- data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
- data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
- data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
- data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
- data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
- data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
- data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
- data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
- data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
- data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
- data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
- data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
- data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
- data/lib/script_core/engine.rb +24 -5
- data/lib/script_core/executable.rb +4 -3
- data/lib/script_core/result.rb +1 -5
- data/lib/script_core/service_channel.rb +1 -0
- data/lib/script_core/version.rb +1 -1
- data/lib/tasks/script_core.rake +3 -1
- data/script_core.gemspec +2 -2
- data/spec/dummy/app/lib/script_engine.rb +64 -5
- metadata +68 -30
- data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
- data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
- data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
- data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
- data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
- data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
- data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -31,21 +31,26 @@ SOURCES_ALL = \
|
|
31
31
|
hash.h hash.c \
|
32
32
|
db.h db.c \
|
33
33
|
arch.c arch.h \
|
34
|
-
arch-x86.h arch-x86.c
|
35
|
-
arch-x86_64.h arch-x86_64.c
|
36
|
-
arch-x32.h arch-x32.c
|
37
|
-
arch-arm.h arch-arm.c
|
38
|
-
arch-aarch64.h arch-aarch64.c
|
39
|
-
arch-mips.h arch-mips.c
|
40
|
-
arch-mips64.h arch-mips64.c
|
41
|
-
arch-mips64n32.h arch-mips64n32.c
|
42
|
-
arch-parisc.h arch-parisc.c
|
43
|
-
arch-
|
44
|
-
arch-
|
45
|
-
arch-
|
46
|
-
arch-
|
47
|
-
|
48
|
-
|
34
|
+
arch-x86.h arch-x86.c \
|
35
|
+
arch-x86_64.h arch-x86_64.c \
|
36
|
+
arch-x32.h arch-x32.c \
|
37
|
+
arch-arm.h arch-arm.c \
|
38
|
+
arch-aarch64.h arch-aarch64.c \
|
39
|
+
arch-mips.h arch-mips.c \
|
40
|
+
arch-mips64.h arch-mips64.c \
|
41
|
+
arch-mips64n32.h arch-mips64n32.c \
|
42
|
+
arch-parisc.h arch-parisc.c \
|
43
|
+
arch-parisc64.h arch-parisc64.c \
|
44
|
+
arch-ppc.h arch-ppc.c \
|
45
|
+
arch-ppc64.h arch-ppc64.c \
|
46
|
+
arch-riscv64.h arch-riscv64.c \
|
47
|
+
arch-s390.h arch-s390.c \
|
48
|
+
arch-s390x.h arch-s390x.c \
|
49
|
+
syscalls.h syscalls.c syscalls.perf.c
|
50
|
+
|
51
|
+
EXTRA_DIST = \
|
52
|
+
arch-syscall-validate arch-gperf-generate \
|
53
|
+
syscalls.csv syscalls.perf.template
|
49
54
|
|
50
55
|
TESTS = arch-syscall-check
|
51
56
|
|
@@ -60,12 +65,21 @@ arch_syscall_check_CFLAGS = ${CODE_COVERAGE_CFLAGS}
|
|
60
65
|
arch_syscall_check_LDFLAGS = ${CODE_COVERAGE_LDFLAGS}
|
61
66
|
|
62
67
|
libseccomp_la_SOURCES = ${SOURCES_ALL}
|
63
|
-
libseccomp_la_CPPFLAGS = ${AM_CPPFLAGS} ${CODE_COVERAGE_CPPFLAGS}
|
64
|
-
-I${top_builddir}/include
|
68
|
+
libseccomp_la_CPPFLAGS = ${AM_CPPFLAGS} ${CODE_COVERAGE_CPPFLAGS}
|
65
69
|
libseccomp_la_CFLAGS = ${AM_CFLAGS} ${CODE_COVERAGE_CFLAGS} ${CFLAGS} \
|
66
70
|
-fPIC -DPIC -fvisibility=hidden
|
67
71
|
libseccomp_la_LDFLAGS = ${AM_LDFLAGS} ${CODE_COVERAGE_LDFLAGS} ${LDFLAGS} \
|
68
72
|
-version-number ${VERSION_MAJOR}:${VERSION_MINOR}:${VERSION_MICRO}
|
69
73
|
|
74
|
+
EXTRA_DIST += syscalls.perf.c syscalls.perf
|
75
|
+
CLEANFILES = syscalls.perf.c syscalls.perf
|
76
|
+
|
77
|
+
syscalls.perf: syscalls.csv syscalls.perf.template
|
78
|
+
${AM_V_GEN} ${srcdir}/arch-gperf-generate \
|
79
|
+
${srcdir}/syscalls.csv ${srcdir}/syscalls.perf.template
|
80
|
+
|
81
|
+
syscalls.perf.c: syscalls.perf
|
82
|
+
${GPERF} -m 100 --null-strings --pic -tCEG -T -S1 $< > $@
|
83
|
+
|
70
84
|
check-build:
|
71
85
|
${MAKE} ${AM_MAKEFLAGS} ${check_PROGRAMS}
|
@@ -27,6 +27,7 @@
|
|
27
27
|
#include <stdlib.h>
|
28
28
|
#include <string.h>
|
29
29
|
#include <stdbool.h>
|
30
|
+
#include <sys/ioctl.h>
|
30
31
|
|
31
32
|
#include <seccomp.h>
|
32
33
|
|
@@ -34,6 +35,7 @@
|
|
34
35
|
#include "db.h"
|
35
36
|
#include "gen_pfc.h"
|
36
37
|
#include "gen_bpf.h"
|
38
|
+
#include "helper.h"
|
37
39
|
#include "system.h"
|
38
40
|
|
39
41
|
#define API __attribute__((visibility("default")))
|
@@ -46,6 +48,72 @@ const struct scmp_version library_version = {
|
|
46
48
|
|
47
49
|
unsigned int seccomp_api_level = 0;
|
48
50
|
|
51
|
+
/**
|
52
|
+
* Filter the error codes we send back to callers
|
53
|
+
* @param err the error code
|
54
|
+
*
|
55
|
+
* We consider error codes part of our API so we want to make sure we don't
|
56
|
+
* accidentally send an undocumented error code to our callers. This function
|
57
|
+
* helps with that.
|
58
|
+
*
|
59
|
+
*/
|
60
|
+
static int _rc_filter(int err)
|
61
|
+
{
|
62
|
+
/* pass through success values */
|
63
|
+
if (err >= 0)
|
64
|
+
return err;
|
65
|
+
|
66
|
+
/* filter the error codes */
|
67
|
+
switch (err) {
|
68
|
+
case -EACCES:
|
69
|
+
/* NOTE: operation is not permitted by libseccomp */
|
70
|
+
case -ECANCELED:
|
71
|
+
/* NOTE: kernel level error that is beyond the control of
|
72
|
+
* libseccomp */
|
73
|
+
case -EDOM:
|
74
|
+
/* NOTE: failure due to arch/ABI */
|
75
|
+
case -EEXIST:
|
76
|
+
/* NOTE: operation failed due to existing rule or filter */
|
77
|
+
case -EINVAL:
|
78
|
+
/* NOTE: invalid input to the libseccomp API */
|
79
|
+
case -ENOENT:
|
80
|
+
/* NOTE: no matching entry found */
|
81
|
+
case -ENOMEM:
|
82
|
+
/* NOTE: unable to allocate enough memory to perform the
|
83
|
+
* requested operation */
|
84
|
+
case -EOPNOTSUPP:
|
85
|
+
/* NOTE: operation is not supported */
|
86
|
+
case -ESRCH:
|
87
|
+
/* NOTE: operation failed due to multi-threading */
|
88
|
+
return err;
|
89
|
+
default:
|
90
|
+
/* NOTE: this is the default "internal libseccomp error"
|
91
|
+
* error code, it is our catch-all */
|
92
|
+
return -EFAULT;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
/**
|
97
|
+
* Filter the system error codes we send back to callers
|
98
|
+
* @param col the filter collection
|
99
|
+
* @param err the error code
|
100
|
+
*
|
101
|
+
* This is similar to _rc_filter(), but it first checks the filter attribute
|
102
|
+
* to determine if we should be filtering the return codes.
|
103
|
+
*
|
104
|
+
*/
|
105
|
+
static int _rc_filter_sys(struct db_filter_col *col, int err)
|
106
|
+
{
|
107
|
+
/* pass through success values */
|
108
|
+
if (err >= 0)
|
109
|
+
return err;
|
110
|
+
|
111
|
+
/* pass the return code if the SCMP_FLTATR_API_SYSRAWRC is true */
|
112
|
+
if (db_col_attr_read(col, SCMP_FLTATR_API_SYSRAWRC))
|
113
|
+
return err;
|
114
|
+
return -ECANCELED;
|
115
|
+
}
|
116
|
+
|
49
117
|
/**
|
50
118
|
* Validate a filter context
|
51
119
|
* @param ctx the filter context
|
@@ -97,17 +165,29 @@ static unsigned int _seccomp_api_update(void)
|
|
97
165
|
|
98
166
|
/* NOTE: level 1 is the base level, start checking at 2 */
|
99
167
|
|
100
|
-
/* level 2 */
|
101
168
|
if (sys_chk_seccomp_syscall() &&
|
102
169
|
sys_chk_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC) == 1)
|
103
170
|
level = 2;
|
104
171
|
|
105
|
-
/* level 3 */
|
106
172
|
if (level == 2 &&
|
107
173
|
sys_chk_seccomp_flag(SECCOMP_FILTER_FLAG_LOG) == 1 &&
|
108
|
-
sys_chk_seccomp_action(SCMP_ACT_LOG) == 1
|
174
|
+
sys_chk_seccomp_action(SCMP_ACT_LOG) == 1 &&
|
175
|
+
sys_chk_seccomp_action(SCMP_ACT_KILL_PROCESS) == 1)
|
109
176
|
level = 3;
|
110
177
|
|
178
|
+
if (level == 3 &&
|
179
|
+
sys_chk_seccomp_flag(SECCOMP_FILTER_FLAG_SPEC_ALLOW) == 1)
|
180
|
+
level = 4;
|
181
|
+
|
182
|
+
if (level == 4 &&
|
183
|
+
sys_chk_seccomp_flag(SECCOMP_FILTER_FLAG_NEW_LISTENER) == 1 &&
|
184
|
+
sys_chk_seccomp_action(SCMP_ACT_NOTIFY) == 1)
|
185
|
+
level = 5;
|
186
|
+
|
187
|
+
if (level == 5 &&
|
188
|
+
sys_chk_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC_ESRCH) == 1)
|
189
|
+
level = 6;
|
190
|
+
|
111
191
|
/* update the stored api level and return */
|
112
192
|
seccomp_api_level = level;
|
113
193
|
return seccomp_api_level;
|
@@ -136,6 +216,10 @@ API int seccomp_api_set(unsigned int level)
|
|
136
216
|
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_LOG, false);
|
137
217
|
sys_set_seccomp_action(SCMP_ACT_LOG, false);
|
138
218
|
sys_set_seccomp_action(SCMP_ACT_KILL_PROCESS, false);
|
219
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_SPEC_ALLOW, false);
|
220
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_NEW_LISTENER, false);
|
221
|
+
sys_set_seccomp_action(SCMP_ACT_NOTIFY, false);
|
222
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC_ESRCH, false);
|
139
223
|
break;
|
140
224
|
case 2:
|
141
225
|
sys_set_seccomp_syscall(true);
|
@@ -143,6 +227,10 @@ API int seccomp_api_set(unsigned int level)
|
|
143
227
|
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_LOG, false);
|
144
228
|
sys_set_seccomp_action(SCMP_ACT_LOG, false);
|
145
229
|
sys_set_seccomp_action(SCMP_ACT_KILL_PROCESS, false);
|
230
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_SPEC_ALLOW, false);
|
231
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_NEW_LISTENER, false);
|
232
|
+
sys_set_seccomp_action(SCMP_ACT_NOTIFY, false);
|
233
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC_ESRCH, false);
|
146
234
|
break;
|
147
235
|
case 3:
|
148
236
|
sys_set_seccomp_syscall(true);
|
@@ -150,19 +238,59 @@ API int seccomp_api_set(unsigned int level)
|
|
150
238
|
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_LOG, true);
|
151
239
|
sys_set_seccomp_action(SCMP_ACT_LOG, true);
|
152
240
|
sys_set_seccomp_action(SCMP_ACT_KILL_PROCESS, true);
|
241
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_SPEC_ALLOW, false);
|
242
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_NEW_LISTENER, false);
|
243
|
+
sys_set_seccomp_action(SCMP_ACT_NOTIFY, false);
|
244
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC_ESRCH, false);
|
245
|
+
break;
|
246
|
+
case 4:
|
247
|
+
sys_set_seccomp_syscall(true);
|
248
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC, true);
|
249
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_LOG, true);
|
250
|
+
sys_set_seccomp_action(SCMP_ACT_LOG, true);
|
251
|
+
sys_set_seccomp_action(SCMP_ACT_KILL_PROCESS, true);
|
252
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_SPEC_ALLOW, true);
|
253
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_NEW_LISTENER, false);
|
254
|
+
sys_set_seccomp_action(SCMP_ACT_NOTIFY, false);
|
255
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC_ESRCH, false);
|
256
|
+
break;
|
257
|
+
case 5:
|
258
|
+
sys_set_seccomp_syscall(true);
|
259
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC, true);
|
260
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_LOG, true);
|
261
|
+
sys_set_seccomp_action(SCMP_ACT_LOG, true);
|
262
|
+
sys_set_seccomp_action(SCMP_ACT_KILL_PROCESS, true);
|
263
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_SPEC_ALLOW, true);
|
264
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_NEW_LISTENER, true);
|
265
|
+
sys_set_seccomp_action(SCMP_ACT_NOTIFY, true);
|
266
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC_ESRCH, false);
|
267
|
+
break;
|
268
|
+
case 6:
|
269
|
+
sys_set_seccomp_syscall(true);
|
270
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC, true);
|
271
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_LOG, true);
|
272
|
+
sys_set_seccomp_action(SCMP_ACT_LOG, true);
|
273
|
+
sys_set_seccomp_action(SCMP_ACT_KILL_PROCESS, true);
|
274
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_SPEC_ALLOW, true);
|
275
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_NEW_LISTENER, true);
|
276
|
+
sys_set_seccomp_action(SCMP_ACT_NOTIFY, true);
|
277
|
+
sys_set_seccomp_flag(SECCOMP_FILTER_FLAG_TSYNC_ESRCH, true);
|
153
278
|
break;
|
154
279
|
default:
|
155
|
-
return -EINVAL;
|
280
|
+
return _rc_filter(-EINVAL);
|
156
281
|
}
|
157
282
|
|
158
283
|
seccomp_api_level = level;
|
159
|
-
return 0;
|
284
|
+
return _rc_filter(0);
|
160
285
|
}
|
161
286
|
|
162
287
|
/* NOTE - function header comment in include/seccomp.h */
|
163
288
|
API scmp_filter_ctx seccomp_init(uint32_t def_action)
|
164
289
|
{
|
165
|
-
|
290
|
+
/* force a runtime api level detection */
|
291
|
+
_seccomp_api_update();
|
292
|
+
|
293
|
+
if (db_col_action_valid(NULL, def_action) < 0)
|
166
294
|
return NULL;
|
167
295
|
|
168
296
|
return db_col_init(def_action);
|
@@ -173,10 +301,11 @@ API int seccomp_reset(scmp_filter_ctx ctx, uint32_t def_action)
|
|
173
301
|
{
|
174
302
|
struct db_filter_col *col = (struct db_filter_col *)ctx;
|
175
303
|
|
176
|
-
|
177
|
-
|
304
|
+
/* use a NULL filter collection here since we are resetting it */
|
305
|
+
if (ctx == NULL || db_col_action_valid(NULL, def_action) < 0)
|
306
|
+
return _rc_filter(-EINVAL);
|
178
307
|
|
179
|
-
return db_col_reset(col, def_action);
|
308
|
+
return _rc_filter(db_col_reset(col, def_action));
|
180
309
|
}
|
181
310
|
|
182
311
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -186,22 +315,21 @@ API void seccomp_release(scmp_filter_ctx ctx)
|
|
186
315
|
}
|
187
316
|
|
188
317
|
/* NOTE - function header comment in include/seccomp.h */
|
189
|
-
API int seccomp_merge(scmp_filter_ctx ctx_dst,
|
190
|
-
scmp_filter_ctx ctx_src)
|
318
|
+
API int seccomp_merge(scmp_filter_ctx ctx_dst, scmp_filter_ctx ctx_src)
|
191
319
|
{
|
192
320
|
struct db_filter_col *col_dst = (struct db_filter_col *)ctx_dst;
|
193
321
|
struct db_filter_col *col_src = (struct db_filter_col *)ctx_src;
|
194
322
|
|
195
323
|
if (db_col_valid(col_dst) || db_col_valid(col_src))
|
196
|
-
return -EINVAL;
|
324
|
+
return _rc_filter(-EINVAL);
|
197
325
|
|
198
326
|
/* NOTE: only the default action, NNP, and TSYNC settings must match */
|
199
327
|
if ((col_dst->attr.act_default != col_src->attr.act_default) ||
|
200
328
|
(col_dst->attr.nnp_enable != col_src->attr.nnp_enable) ||
|
201
329
|
(col_dst->attr.tsync_enable != col_src->attr.tsync_enable))
|
202
|
-
return -EINVAL;
|
330
|
+
return _rc_filter(-EINVAL);
|
203
331
|
|
204
|
-
return db_col_merge(col_dst, col_src);
|
332
|
+
return _rc_filter(db_col_merge(col_dst, col_src));
|
205
333
|
}
|
206
334
|
|
207
335
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -226,8 +354,7 @@ API uint32_t seccomp_arch_native(void)
|
|
226
354
|
}
|
227
355
|
|
228
356
|
/* NOTE - function header comment in include/seccomp.h */
|
229
|
-
API int seccomp_arch_exist(const scmp_filter_ctx ctx,
|
230
|
-
uint32_t arch_token)
|
357
|
+
API int seccomp_arch_exist(const scmp_filter_ctx ctx, uint32_t arch_token)
|
231
358
|
{
|
232
359
|
struct db_filter_col *col = (struct db_filter_col *)ctx;
|
233
360
|
|
@@ -235,9 +362,9 @@ API int seccomp_arch_exist(const scmp_filter_ctx ctx,
|
|
235
362
|
arch_token = arch_def_native->token;
|
236
363
|
|
237
364
|
if (arch_valid(arch_token))
|
238
|
-
return -EINVAL;
|
365
|
+
return _rc_filter(-EINVAL);
|
239
366
|
|
240
|
-
return (db_col_arch_exist(col, arch_token) ? 0 : -EEXIST);
|
367
|
+
return _rc_filter((db_col_arch_exist(col, arch_token) ? 0 : -EEXIST));
|
241
368
|
}
|
242
369
|
|
243
370
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -251,11 +378,11 @@ API int seccomp_arch_add(scmp_filter_ctx ctx, uint32_t arch_token)
|
|
251
378
|
|
252
379
|
arch = arch_def_lookup(arch_token);
|
253
380
|
if (arch == NULL)
|
254
|
-
return -EINVAL;
|
381
|
+
return _rc_filter(-EINVAL);
|
255
382
|
if (db_col_arch_exist(col, arch_token))
|
256
|
-
return -EEXIST;
|
383
|
+
return _rc_filter(-EEXIST);
|
257
384
|
|
258
|
-
return db_col_db_new(col, arch);
|
385
|
+
return _rc_filter(db_col_db_new(col, arch));
|
259
386
|
}
|
260
387
|
|
261
388
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -267,23 +394,25 @@ API int seccomp_arch_remove(scmp_filter_ctx ctx, uint32_t arch_token)
|
|
267
394
|
arch_token = arch_def_native->token;
|
268
395
|
|
269
396
|
if (arch_valid(arch_token))
|
270
|
-
return -EINVAL;
|
397
|
+
return _rc_filter(-EINVAL);
|
271
398
|
if (db_col_arch_exist(col, arch_token) != -EEXIST)
|
272
|
-
return -EEXIST;
|
399
|
+
return _rc_filter(-EEXIST);
|
273
400
|
|
274
|
-
return db_col_db_remove(col, arch_token);
|
401
|
+
return _rc_filter(db_col_db_remove(col, arch_token));
|
275
402
|
}
|
276
403
|
|
277
404
|
/* NOTE - function header comment in include/seccomp.h */
|
278
405
|
API int seccomp_load(const scmp_filter_ctx ctx)
|
279
406
|
{
|
280
407
|
struct db_filter_col *col;
|
408
|
+
bool rawrc;
|
281
409
|
|
282
410
|
if (_ctx_valid(ctx))
|
283
|
-
return -EINVAL;
|
411
|
+
return _rc_filter(-EINVAL);
|
284
412
|
col = (struct db_filter_col *)ctx;
|
285
413
|
|
286
|
-
|
414
|
+
rawrc = db_col_attr_read(col, SCMP_FLTATR_API_SYSRAWRC);
|
415
|
+
return _rc_filter(sys_filter_load(col, rawrc));
|
287
416
|
}
|
288
417
|
|
289
418
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -291,9 +420,10 @@ API int seccomp_attr_get(const scmp_filter_ctx ctx,
|
|
291
420
|
enum scmp_filter_attr attr, uint32_t *value)
|
292
421
|
{
|
293
422
|
if (_ctx_valid(ctx))
|
294
|
-
return -EINVAL;
|
423
|
+
return _rc_filter(-EINVAL);
|
295
424
|
|
296
|
-
return db_col_attr_get((const struct db_filter_col *)ctx,
|
425
|
+
return _rc_filter(db_col_attr_get((const struct db_filter_col *)ctx,
|
426
|
+
attr, value));
|
297
427
|
}
|
298
428
|
|
299
429
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -301,9 +431,10 @@ API int seccomp_attr_set(scmp_filter_ctx ctx,
|
|
301
431
|
enum scmp_filter_attr attr, uint32_t value)
|
302
432
|
{
|
303
433
|
if (_ctx_valid(ctx))
|
304
|
-
return -EINVAL;
|
434
|
+
return _rc_filter(-EINVAL);
|
305
435
|
|
306
|
-
return db_col_attr_set((struct db_filter_col *)ctx,
|
436
|
+
return _rc_filter(db_col_attr_set((struct db_filter_col *)ctx,
|
437
|
+
attr, value));
|
307
438
|
}
|
308
439
|
|
309
440
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -391,9 +522,9 @@ API int seccomp_syscall_priority(scmp_filter_ctx ctx,
|
|
391
522
|
struct db_filter_col *col = (struct db_filter_col *)ctx;
|
392
523
|
|
393
524
|
if (db_col_valid(col) || _syscall_valid(col, syscall))
|
394
|
-
return -EINVAL;
|
525
|
+
return _rc_filter(-EINVAL);
|
395
526
|
|
396
|
-
return db_col_syscall_priority(col, syscall, priority);
|
527
|
+
return _rc_filter(db_col_syscall_priority(col, syscall, priority));
|
397
528
|
}
|
398
529
|
|
399
530
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -406,20 +537,21 @@ API int seccomp_rule_add_array(scmp_filter_ctx ctx,
|
|
406
537
|
struct db_filter_col *col = (struct db_filter_col *)ctx;
|
407
538
|
|
408
539
|
if (arg_cnt > ARG_COUNT_MAX)
|
409
|
-
return -EINVAL;
|
540
|
+
return _rc_filter(-EINVAL);
|
410
541
|
if (arg_cnt > 0 && arg_array == NULL)
|
411
|
-
return -EINVAL;
|
542
|
+
return _rc_filter(-EINVAL);
|
412
543
|
|
413
544
|
if (db_col_valid(col) || _syscall_valid(col, syscall))
|
414
|
-
return -EINVAL;
|
545
|
+
return _rc_filter(-EINVAL);
|
415
546
|
|
416
|
-
rc =
|
547
|
+
rc = db_col_action_valid(col, action);
|
417
548
|
if (rc < 0)
|
418
|
-
return rc;
|
549
|
+
return _rc_filter(rc);
|
419
550
|
if (action == col->attr.act_default)
|
420
|
-
return -
|
551
|
+
return _rc_filter(-EACCES);
|
421
552
|
|
422
|
-
return db_col_rule_add(col, 0, action,
|
553
|
+
return _rc_filter(db_col_rule_add(col, 0, action,
|
554
|
+
syscall, arg_cnt, arg_array));
|
423
555
|
}
|
424
556
|
|
425
557
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -434,7 +566,7 @@ API int seccomp_rule_add(scmp_filter_ctx ctx,
|
|
434
566
|
|
435
567
|
/* arg_cnt is unsigned, so no need to check the lower bound */
|
436
568
|
if (arg_cnt > ARG_COUNT_MAX)
|
437
|
-
return -EINVAL;
|
569
|
+
return _rc_filter(-EINVAL);
|
438
570
|
|
439
571
|
va_start(arg_list, arg_cnt);
|
440
572
|
for (iter = 0; iter < arg_cnt; ++iter)
|
@@ -442,7 +574,7 @@ API int seccomp_rule_add(scmp_filter_ctx ctx,
|
|
442
574
|
rc = seccomp_rule_add_array(ctx, action, syscall, arg_cnt, arg_array);
|
443
575
|
va_end(arg_list);
|
444
576
|
|
445
|
-
return rc;
|
577
|
+
return _rc_filter(rc);
|
446
578
|
}
|
447
579
|
|
448
580
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -455,23 +587,24 @@ API int seccomp_rule_add_exact_array(scmp_filter_ctx ctx,
|
|
455
587
|
struct db_filter_col *col = (struct db_filter_col *)ctx;
|
456
588
|
|
457
589
|
if (arg_cnt > ARG_COUNT_MAX)
|
458
|
-
return -EINVAL;
|
590
|
+
return _rc_filter(-EINVAL);
|
459
591
|
if (arg_cnt > 0 && arg_array == NULL)
|
460
|
-
return -EINVAL;
|
592
|
+
return _rc_filter(-EINVAL);
|
461
593
|
|
462
594
|
if (db_col_valid(col) || _syscall_valid(col, syscall))
|
463
|
-
return -EINVAL;
|
595
|
+
return _rc_filter(-EINVAL);
|
464
596
|
|
465
|
-
rc =
|
597
|
+
rc = db_col_action_valid(col, action);
|
466
598
|
if (rc < 0)
|
467
|
-
return rc;
|
599
|
+
return _rc_filter(rc);
|
468
600
|
if (action == col->attr.act_default)
|
469
|
-
return -
|
601
|
+
return _rc_filter(-EACCES);
|
470
602
|
|
471
603
|
if (col->filter_cnt > 1)
|
472
|
-
return -EOPNOTSUPP;
|
604
|
+
return _rc_filter(-EOPNOTSUPP);
|
473
605
|
|
474
|
-
return db_col_rule_add(col, 1, action,
|
606
|
+
return _rc_filter(db_col_rule_add(col, 1, action,
|
607
|
+
syscall, arg_cnt, arg_array));
|
475
608
|
}
|
476
609
|
|
477
610
|
/* NOTE - function header comment in include/seccomp.h */
|
@@ -486,7 +619,7 @@ API int seccomp_rule_add_exact(scmp_filter_ctx ctx,
|
|
486
619
|
|
487
620
|
/* arg_cnt is unsigned, so no need to check the lower bound */
|
488
621
|
if (arg_cnt > ARG_COUNT_MAX)
|
489
|
-
return -EINVAL;
|
622
|
+
return _rc_filter(-EINVAL);
|
490
623
|
|
491
624
|
va_start(arg_list, arg_cnt);
|
492
625
|
for (iter = 0; iter < arg_cnt; ++iter)
|
@@ -495,34 +628,97 @@ API int seccomp_rule_add_exact(scmp_filter_ctx ctx,
|
|
495
628
|
action, syscall, arg_cnt, arg_array);
|
496
629
|
va_end(arg_list);
|
497
630
|
|
498
|
-
return rc;
|
631
|
+
return _rc_filter(rc);
|
632
|
+
}
|
633
|
+
|
634
|
+
/* NOTE - function header comment in include/seccomp.h */
|
635
|
+
API int seccomp_notify_alloc(struct seccomp_notif **req,
|
636
|
+
struct seccomp_notif_resp **resp)
|
637
|
+
{
|
638
|
+
/* force a runtime api level detection */
|
639
|
+
_seccomp_api_update();
|
640
|
+
|
641
|
+
return _rc_filter(sys_notify_alloc(req, resp));
|
642
|
+
}
|
643
|
+
|
644
|
+
/* NOTE - function header comment in include/seccomp.h */
|
645
|
+
API void seccomp_notify_free(struct seccomp_notif *req,
|
646
|
+
struct seccomp_notif_resp *resp)
|
647
|
+
{
|
648
|
+
if (req)
|
649
|
+
free(req);
|
650
|
+
if (resp)
|
651
|
+
free(resp);
|
652
|
+
}
|
653
|
+
|
654
|
+
/* NOTE - function header comment in include/seccomp.h */
|
655
|
+
API int seccomp_notify_receive(int fd, struct seccomp_notif *req)
|
656
|
+
{
|
657
|
+
return _rc_filter(sys_notify_receive(fd, req));
|
658
|
+
}
|
659
|
+
|
660
|
+
/* NOTE - function header comment in include/seccomp.h */
|
661
|
+
API int seccomp_notify_respond(int fd, struct seccomp_notif_resp *resp)
|
662
|
+
{
|
663
|
+
return _rc_filter(sys_notify_respond(fd, resp));
|
664
|
+
}
|
665
|
+
|
666
|
+
/* NOTE - function header comment in include/seccomp.h */
|
667
|
+
API int seccomp_notify_id_valid(int fd, uint64_t id)
|
668
|
+
{
|
669
|
+
/* force a runtime api level detection */
|
670
|
+
_seccomp_api_update();
|
671
|
+
|
672
|
+
return _rc_filter(sys_notify_id_valid(fd, id));
|
673
|
+
}
|
674
|
+
|
675
|
+
/* NOTE - function header comment in include/seccomp.h */
|
676
|
+
API int seccomp_notify_fd(const scmp_filter_ctx ctx)
|
677
|
+
{
|
678
|
+
struct db_filter_col *col;
|
679
|
+
|
680
|
+
/* force a runtime api level detection */
|
681
|
+
_seccomp_api_update();
|
682
|
+
|
683
|
+
if (_ctx_valid(ctx))
|
684
|
+
return _rc_filter(-EINVAL);
|
685
|
+
col = (struct db_filter_col *)ctx;
|
686
|
+
|
687
|
+
return _rc_filter(col->notify_fd);
|
499
688
|
}
|
500
689
|
|
501
690
|
/* NOTE - function header comment in include/seccomp.h */
|
502
691
|
API int seccomp_export_pfc(const scmp_filter_ctx ctx, int fd)
|
503
692
|
{
|
693
|
+
int rc;
|
694
|
+
struct db_filter_col *col;
|
695
|
+
|
504
696
|
if (_ctx_valid(ctx))
|
505
|
-
return -EINVAL;
|
697
|
+
return _rc_filter(-EINVAL);
|
698
|
+
col = (struct db_filter_col *)ctx;
|
506
699
|
|
507
|
-
|
700
|
+
rc = gen_pfc_generate(col, fd);
|
701
|
+
return _rc_filter_sys(col, rc);
|
508
702
|
}
|
509
703
|
|
510
704
|
/* NOTE - function header comment in include/seccomp.h */
|
511
705
|
API int seccomp_export_bpf(const scmp_filter_ctx ctx, int fd)
|
512
706
|
{
|
513
707
|
int rc;
|
708
|
+
struct db_filter_col *col;
|
514
709
|
struct bpf_program *program;
|
515
710
|
|
516
711
|
if (_ctx_valid(ctx))
|
517
|
-
return -EINVAL;
|
712
|
+
return _rc_filter(-EINVAL);
|
713
|
+
col = (struct db_filter_col *)ctx;
|
518
714
|
|
519
|
-
|
520
|
-
if (
|
521
|
-
return
|
715
|
+
rc = gen_bpf_generate(col, &program);
|
716
|
+
if (rc < 0)
|
717
|
+
return _rc_filter(rc);
|
522
718
|
rc = write(fd, program->blks, BPF_PGM_SIZE(program));
|
523
719
|
gen_bpf_release(program);
|
524
720
|
if (rc < 0)
|
525
|
-
return -errno;
|
721
|
+
return _rc_filter_sys(col, -errno);
|
526
722
|
|
527
723
|
return 0;
|
528
724
|
}
|