script_core 0.2.2 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
}
|