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.
Files changed (376) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +41 -45
  3. data/.travis.yml +2 -1
  4. data/Gemfile +3 -3
  5. data/README.md +7 -1
  6. data/bootstrap.sh +2 -2
  7. data/ext/enterprise_script_service/libseccomp/.travis.yml +24 -12
  8. data/ext/enterprise_script_service/libseccomp/CHANGELOG +32 -0
  9. data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +37 -26
  10. data/ext/enterprise_script_service/libseccomp/CREDITS +11 -0
  11. data/ext/enterprise_script_service/libseccomp/README.md +21 -1
  12. data/ext/enterprise_script_service/libseccomp/configure.ac +13 -8
  13. data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +6 -0
  14. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +12 -2
  15. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +38 -6
  16. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +53 -2
  17. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_export_bpf.3 +20 -2
  18. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -2
  19. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_load.3 +32 -2
  20. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +16 -2
  21. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_alloc.3 +113 -0
  22. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_fd.3 +1 -0
  23. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_free.3 +1 -0
  24. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_id_valid.3 +1 -0
  25. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_receive.3 +1 -0
  26. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_respond.3 +1 -0
  27. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +64 -3
  28. data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_priority.3 +18 -3
  29. data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +19 -0
  30. data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +116 -0
  31. data/ext/enterprise_script_service/libseccomp/src/.gitignore +2 -0
  32. data/ext/enterprise_script_service/libseccomp/src/Makefile.am +31 -17
  33. data/ext/enterprise_script_service/libseccomp/src/api.c +254 -58
  34. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +1 -9
  35. data/ext/enterprise_script_service/libseccomp/src/arch-arm.c +47 -2
  36. data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -9
  37. data/ext/enterprise_script_service/libseccomp/src/arch-gperf-generate +40 -0
  38. data/ext/enterprise_script_service/libseccomp/src/arch-mips.c +41 -4
  39. data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +2 -10
  40. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.c +41 -4
  41. data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +3 -11
  42. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.c +41 -4
  43. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +2 -10
  44. data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +1 -10
  45. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +3 -3
  46. data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.h +29 -0
  47. data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -9
  48. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.c +606 -8
  49. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +2 -10
  50. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.c +31 -0
  51. data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.h +22 -0
  52. data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +171 -12
  53. data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +1 -17
  54. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +166 -10
  55. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +1 -20
  56. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +8 -1
  57. data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +359 -143
  58. data/ext/enterprise_script_service/libseccomp/src/arch-x32.c +36 -2
  59. data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +2 -10
  60. data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +172 -10
  61. data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +1 -14
  62. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -9
  63. data/ext/enterprise_script_service/libseccomp/src/arch.c +11 -3
  64. data/ext/enterprise_script_service/libseccomp/src/arch.h +7 -0
  65. data/ext/enterprise_script_service/libseccomp/src/db.c +268 -57
  66. data/ext/enterprise_script_service/libseccomp/src/db.h +16 -2
  67. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +503 -148
  68. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.h +2 -1
  69. data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +165 -37
  70. data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +37 -1
  71. data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +295 -5
  72. data/ext/enterprise_script_service/libseccomp/src/syscalls.c +56 -0
  73. data/ext/enterprise_script_service/libseccomp/src/syscalls.csv +470 -0
  74. data/ext/enterprise_script_service/libseccomp/src/syscalls.h +62 -0
  75. data/ext/enterprise_script_service/libseccomp/src/syscalls.perf.template +82 -0
  76. data/ext/enterprise_script_service/libseccomp/src/system.c +196 -16
  77. data/ext/enterprise_script_service/libseccomp/src/system.h +68 -13
  78. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +10 -2
  79. data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +1 -1
  80. data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +5 -5
  81. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +35 -1
  82. data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -1
  83. data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +4 -3
  84. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +12 -0
  85. data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +1 -0
  86. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.c → 18-sim-basic_allowlist.c} +0 -0
  87. data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.py → 18-sim-basic_allowlist.py} +0 -0
  88. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_allowlist.tests +32 -0
  89. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.c +3 -0
  90. data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.py +1 -0
  91. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.c +3 -0
  92. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.py +1 -0
  93. data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.tests +33 -17
  94. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.c → 34-sim-basic_denylist.c} +0 -0
  95. data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.py → 34-sim-basic_denylist.py} +0 -0
  96. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_denylist.tests +32 -0
  97. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +3 -0
  98. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +1 -0
  99. data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +25 -25
  100. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +24 -3
  101. data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +16 -1
  102. data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +3 -3
  103. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.c +112 -0
  104. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.py +60 -0
  105. data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.tests +11 -0
  106. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
  107. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
  108. data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
  109. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.c +156 -0
  110. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.py +95 -0
  111. data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.tests +65 -0
  112. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.c +128 -0
  113. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.py +95 -0
  114. data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.tests +11 -0
  115. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.c +134 -0
  116. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.sh +46 -0
  117. data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.tests +11 -0
  118. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.c +90 -0
  119. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.py +65 -0
  120. data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.tests +11 -0
  121. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.c +64 -0
  122. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.py +46 -0
  123. data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.tests +11 -0
  124. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.c +116 -0
  125. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.py +61 -0
  126. data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.tests +11 -0
  127. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +34 -10
  128. data/ext/enterprise_script_service/libseccomp/tests/regression +10 -3
  129. data/ext/enterprise_script_service/libseccomp/tests/util.c +3 -3
  130. data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
  131. data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -1
  132. data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +3 -0
  133. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +4 -2
  134. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +4 -0
  135. data/ext/enterprise_script_service/libseccomp/tools/util.c +14 -12
  136. data/ext/enterprise_script_service/libseccomp/tools/util.h +7 -0
  137. data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +106 -0
  138. data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +51 -0
  139. data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +24 -0
  140. data/ext/enterprise_script_service/mruby/.gitignore +3 -0
  141. data/ext/enterprise_script_service/mruby/.travis.yml +6 -9
  142. data/ext/enterprise_script_service/mruby/AUTHORS +1 -0
  143. data/ext/enterprise_script_service/mruby/Doxyfile +1 -1
  144. data/ext/enterprise_script_service/mruby/LICENSE +1 -1
  145. data/ext/enterprise_script_service/mruby/README.md +6 -2
  146. data/ext/enterprise_script_service/mruby/appveyor.yml +9 -12
  147. data/ext/enterprise_script_service/mruby/appveyor_config.rb +9 -0
  148. data/ext/enterprise_script_service/mruby/build_config.rb +6 -6
  149. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +6 -2
  150. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
  151. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +4 -8
  152. data/ext/enterprise_script_service/mruby/doc/limitations.md +10 -10
  153. data/ext/enterprise_script_service/mruby/doc/opcode.md +108 -95
  154. data/ext/enterprise_script_service/mruby/examples/targets/build_config_ArduinoDue.rb +2 -2
  155. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelEdison.rb +2 -2
  156. data/ext/enterprise_script_service/mruby/examples/targets/build_config_IntelGalileo.rb +2 -2
  157. data/ext/enterprise_script_service/mruby/examples/targets/build_config_RX630.rb +2 -2
  158. data/ext/enterprise_script_service/mruby/examples/targets/build_config_chipKITMax32.rb +2 -2
  159. data/ext/enterprise_script_service/mruby/examples/targets/build_config_dreamcast_shelf.rb +108 -0
  160. data/ext/enterprise_script_service/mruby/include/mrbconf.h +10 -7
  161. data/ext/enterprise_script_service/mruby/include/mruby.h +24 -9
  162. data/ext/enterprise_script_service/mruby/include/mruby/array.h +4 -0
  163. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +11 -2
  164. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +0 -10
  165. data/ext/enterprise_script_service/mruby/include/mruby/common.h +10 -0
  166. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +11 -3
  167. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +1 -17
  168. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +10 -0
  169. data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
  170. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +23 -5
  171. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +1 -0
  172. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +3 -2
  173. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +13 -8
  174. data/ext/enterprise_script_service/mruby/include/mruby/string.h +2 -1
  175. data/ext/enterprise_script_service/mruby/include/mruby/value.h +32 -41
  176. data/ext/enterprise_script_service/mruby/include/mruby/version.h +4 -4
  177. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +2 -30
  178. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +21 -46
  179. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +9 -0
  180. data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
  181. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +7 -0
  182. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +0 -31
  183. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -8
  184. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
  185. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +5 -2
  186. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +0 -1
  187. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +5 -1
  188. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +7 -3
  189. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +24 -21
  190. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +0 -1
  191. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +6 -2
  192. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
  193. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +6 -1
  194. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +76 -48
  195. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +107 -32
  196. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13153 -0
  197. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +13 -15
  198. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
  199. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +1 -2
  200. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
  201. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +3 -214
  202. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
  203. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +1 -2
  204. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +1 -3
  205. data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +3 -4
  206. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
  207. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
  208. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
  209. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +7 -12
  210. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +77 -32
  211. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +18 -36
  212. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +324 -122
  213. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +18 -12
  214. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +32 -0
  215. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +57 -49
  216. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +6 -8
  217. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +15 -17
  218. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +9 -0
  219. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +4 -5
  220. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +3 -12
  221. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +0 -1
  222. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +113 -10
  223. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +6 -3
  224. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +2 -2
  225. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +1 -3
  226. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +1 -3
  227. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +9 -9
  228. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +1 -1
  229. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
  230. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
  231. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +62 -25
  232. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +5 -23
  233. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +4 -5
  234. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +5 -11
  235. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +1 -1
  236. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +1 -0
  237. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +11 -15
  238. data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
  239. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -3
  240. data/ext/enterprise_script_service/mruby/src/array.c +25 -11
  241. data/ext/enterprise_script_service/mruby/src/backtrace.c +2 -2
  242. data/ext/enterprise_script_service/mruby/src/class.c +48 -32
  243. data/ext/enterprise_script_service/mruby/src/codedump.c +4 -0
  244. data/ext/enterprise_script_service/mruby/src/debug.c +8 -5
  245. data/ext/enterprise_script_service/mruby/src/dump.c +3 -65
  246. data/ext/enterprise_script_service/mruby/src/error.c +58 -7
  247. data/ext/enterprise_script_service/mruby/src/etc.c +13 -5
  248. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +98 -21
  249. data/ext/enterprise_script_service/mruby/src/gc.c +15 -280
  250. data/ext/enterprise_script_service/mruby/src/hash.c +13 -21
  251. data/ext/enterprise_script_service/mruby/src/kernel.c +6 -9
  252. data/ext/enterprise_script_service/mruby/src/load.c +56 -30
  253. data/ext/enterprise_script_service/mruby/src/numeric.c +50 -70
  254. data/ext/enterprise_script_service/mruby/src/object.c +23 -5
  255. data/ext/enterprise_script_service/mruby/src/print.c +27 -3
  256. data/ext/enterprise_script_service/mruby/src/proc.c +26 -7
  257. data/ext/enterprise_script_service/mruby/src/range.c +4 -12
  258. data/ext/enterprise_script_service/mruby/src/state.c +34 -11
  259. data/ext/enterprise_script_service/mruby/src/string.c +93 -56
  260. data/ext/enterprise_script_service/mruby/src/symbol.c +13 -12
  261. data/ext/enterprise_script_service/mruby/src/vm.c +48 -53
  262. data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +19 -22
  263. data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +1 -1
  264. data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
  265. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +3 -3
  266. data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +6 -6
  267. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +8 -8
  268. data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
  269. data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
  270. data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
  271. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +15 -24
  272. data/ext/enterprise_script_service/mruby/travis_config.rb +0 -14
  273. data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
  274. data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
  275. data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
  276. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
  277. data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
  278. data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
  279. data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
  280. data/ext/enterprise_script_service/msgpack/README.md +3 -2
  281. data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
  282. data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
  283. data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
  284. data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
  285. data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
  286. data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
  287. data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
  288. data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
  289. data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
  290. data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
  291. data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
  292. data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
  293. data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
  294. data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
  295. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
  296. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
  297. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
  298. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
  299. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
  300. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
  301. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
  302. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
  303. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
  304. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
  305. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
  306. data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
  307. data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
  308. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
  309. data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
  310. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
  311. data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
  312. data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
  313. data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
  314. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
  315. data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
  316. data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
  317. data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
  318. data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
  319. data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
  320. data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
  321. data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
  322. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
  323. data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
  324. data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
  325. data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
  326. data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
  327. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
  328. data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
  329. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
  330. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
  331. data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
  332. data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
  333. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
  334. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
  335. data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
  336. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
  337. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
  338. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
  339. data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
  340. data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
  341. data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
  342. data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
  343. data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
  344. data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
  345. data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
  346. data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
  347. data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
  348. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
  349. data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
  350. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
  351. data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
  352. data/lib/script_core/engine.rb +24 -5
  353. data/lib/script_core/executable.rb +4 -3
  354. data/lib/script_core/result.rb +1 -5
  355. data/lib/script_core/service_channel.rb +1 -0
  356. data/lib/script_core/version.rb +1 -1
  357. data/lib/tasks/script_core.rake +3 -1
  358. data/script_core.gemspec +2 -2
  359. data/spec/dummy/app/lib/script_engine.rb +64 -5
  360. metadata +68 -30
  361. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
  362. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
  363. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
  364. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
  365. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
  366. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
  367. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
  368. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
  369. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
  370. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
  371. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
  372. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
  373. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
  374. data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
  375. data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
  376. data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
@@ -23,17 +23,9 @@
23
23
  #ifndef _ARCH_PPC64_H
24
24
  #define _ARCH_PPC64_H
25
25
 
26
- #include <inttypes.h>
27
-
28
26
  #include "arch.h"
29
- #include "system.h"
30
-
31
- extern const struct arch_def arch_def_ppc64;
32
- extern const struct arch_def arch_def_ppc64le;
33
-
34
- int ppc64_syscall_resolve_name(const char *name);
35
- const char *ppc64_syscall_resolve_num(int num);
36
27
 
37
- const struct arch_syscall_def *ppc64_syscall_iterate(unsigned int spot);
28
+ ARCH_DECL(ppc64)
29
+ ARCH_DECL(ppc64le)
38
30
 
39
31
  #endif
@@ -0,0 +1,31 @@
1
+ /*
2
+ * This library is free software; you can redistribute it and/or modify it
3
+ * under the terms of version 2.1 of the GNU Lesser General Public License as
4
+ * published by the Free Software Foundation.
5
+ *
6
+ * This library is distributed in the hope that it will be useful, but WITHOUT
7
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
9
+ * for more details.
10
+ *
11
+ * You should have received a copy of the GNU Lesser General Public License
12
+ * along with this library; if not, see <http://www.gnu.org/licenses>.
13
+ */
14
+
15
+ #include <stdlib.h>
16
+ #include <errno.h>
17
+ #include <linux/audit.h>
18
+
19
+ #include "arch.h"
20
+ #include "arch-riscv64.h"
21
+
22
+ const struct arch_def arch_def_riscv64 = {
23
+ .token = SCMP_ARCH_RISCV64,
24
+ .token_bpf = AUDIT_ARCH_RISCV64,
25
+ .size = ARCH_SIZE_64,
26
+ .endian = ARCH_ENDIAN_LITTLE,
27
+ .syscall_resolve_name = riscv64_syscall_resolve_name,
28
+ .syscall_resolve_num = riscv64_syscall_resolve_num,
29
+ .syscall_rewrite = NULL,
30
+ .rule_add = NULL,
31
+ };
@@ -0,0 +1,22 @@
1
+ /*
2
+ * This library is free software; you can redistribute it and/or modify it
3
+ * under the terms of version 2.1 of the GNU Lesser General Public License as
4
+ * published by the Free Software Foundation.
5
+ *
6
+ * This library is distributed in the hope that it will be useful, but WITHOUT
7
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
9
+ * for more details.
10
+ *
11
+ * You should have received a copy of the GNU Lesser General Public License
12
+ * along with this library; if not, see <http://www.gnu.org/licenses>.
13
+ */
14
+
15
+ #ifndef _ARCH_RISCV64_H
16
+ #define _ARCH_RISCV64_H
17
+
18
+ #include "arch.h"
19
+
20
+ ARCH_DECL(riscv64)
21
+
22
+ #endif
@@ -8,6 +8,8 @@
8
8
  #include <string.h>
9
9
  #include <linux/audit.h>
10
10
 
11
+ #include "db.h"
12
+ #include "syscalls.h"
11
13
  #include "arch.h"
12
14
  #include "arch-s390.h"
13
15
 
@@ -15,16 +17,159 @@
15
17
  #define __s390_NR_socketcall 102
16
18
  #define __s390_NR_ipc 117
17
19
 
18
- const struct arch_def arch_def_s390 = {
19
- .token = SCMP_ARCH_S390,
20
- .token_bpf = AUDIT_ARCH_S390,
21
- .size = ARCH_SIZE_32,
22
- .endian = ARCH_ENDIAN_BIG,
23
- .syscall_resolve_name = s390_syscall_resolve_name,
24
- .syscall_resolve_num = s390_syscall_resolve_num,
25
- .syscall_rewrite = s390_syscall_rewrite,
26
- .rule_add = s390_rule_add,
27
- };
20
+ /**
21
+ * Resolve a syscall name to a number
22
+ * @param name the syscall name
23
+ *
24
+ * Resolve the given syscall name to the syscall number using the syscall table.
25
+ * Returns the syscall number on success, including negative pseudo syscall
26
+ * numbers; returns __NR_SCMP_ERROR on failure.
27
+ *
28
+ */
29
+ int s390_syscall_resolve_name_munge(const char *name)
30
+ {
31
+ if (strcmp(name, "accept") == 0)
32
+ return __PNR_accept;
33
+ if (strcmp(name, "accept4") == 0)
34
+ return __PNR_accept4;
35
+ else if (strcmp(name, "bind") == 0)
36
+ return __PNR_bind;
37
+ else if (strcmp(name, "connect") == 0)
38
+ return __PNR_connect;
39
+ else if (strcmp(name, "getpeername") == 0)
40
+ return __PNR_getpeername;
41
+ else if (strcmp(name, "getsockname") == 0)
42
+ return __PNR_getsockname;
43
+ else if (strcmp(name, "getsockopt") == 0)
44
+ return __PNR_getsockopt;
45
+ else if (strcmp(name, "listen") == 0)
46
+ return __PNR_listen;
47
+ else if (strcmp(name, "msgctl") == 0)
48
+ return __PNR_msgctl;
49
+ else if (strcmp(name, "msgget") == 0)
50
+ return __PNR_msgget;
51
+ else if (strcmp(name, "msgrcv") == 0)
52
+ return __PNR_msgrcv;
53
+ else if (strcmp(name, "msgsnd") == 0)
54
+ return __PNR_msgsnd;
55
+ else if (strcmp(name, "recv") == 0)
56
+ return __PNR_recv;
57
+ else if (strcmp(name, "recvfrom") == 0)
58
+ return __PNR_recvfrom;
59
+ else if (strcmp(name, "recvmsg") == 0)
60
+ return __PNR_recvmsg;
61
+ else if (strcmp(name, "semctl") == 0)
62
+ return __PNR_semctl;
63
+ else if (strcmp(name, "semget") == 0)
64
+ return __PNR_semget;
65
+ else if (strcmp(name, "semtimedop") == 0)
66
+ return __PNR_semtimedop;
67
+ else if (strcmp(name, "recvmmsg") == 0)
68
+ return __PNR_recvmmsg;
69
+ else if (strcmp(name, "send") == 0)
70
+ return __PNR_send;
71
+ else if (strcmp(name, "sendmsg") == 0)
72
+ return __PNR_sendmsg;
73
+ else if (strcmp(name, "sendmmsg") == 0)
74
+ return __PNR_sendmmsg;
75
+ else if (strcmp(name, "sendto") == 0)
76
+ return __PNR_sendto;
77
+ else if (strcmp(name, "setsockopt") == 0)
78
+ return __PNR_setsockopt;
79
+ else if (strcmp(name, "shmat") == 0)
80
+ return __PNR_shmat;
81
+ else if (strcmp(name, "shmdt") == 0)
82
+ return __PNR_shmdt;
83
+ else if (strcmp(name, "shmget") == 0)
84
+ return __PNR_shmget;
85
+ else if (strcmp(name, "shmctl") == 0)
86
+ return __PNR_shmctl;
87
+ else if (strcmp(name, "shutdown") == 0)
88
+ return __PNR_shutdown;
89
+ else if (strcmp(name, "socket") == 0)
90
+ return __PNR_socket;
91
+ else if (strcmp(name, "socketpair") == 0)
92
+ return __PNR_socketpair;
93
+
94
+ return s390_syscall_resolve_name(name);
95
+ }
96
+
97
+ /**
98
+ * Resolve a syscall number to a name
99
+ * @param num the syscall number
100
+ *
101
+ * Resolve the given syscall number to the syscall name using the syscall table.
102
+ * Returns a pointer to the syscall name string on success, including pseudo
103
+ * syscall names; returns NULL on failure.
104
+ *
105
+ */
106
+ const char *s390_syscall_resolve_num_munge(int num)
107
+ {
108
+ if (num == __PNR_accept)
109
+ return "accept";
110
+ else if (num == __PNR_accept4)
111
+ return "accept4";
112
+ else if (num == __PNR_bind)
113
+ return "bind";
114
+ else if (num == __PNR_connect)
115
+ return "connect";
116
+ else if (num == __PNR_getpeername)
117
+ return "getpeername";
118
+ else if (num == __PNR_getsockname)
119
+ return "getsockname";
120
+ else if (num == __PNR_getsockopt)
121
+ return "getsockopt";
122
+ else if (num == __PNR_listen)
123
+ return "listen";
124
+ else if (num == __PNR_msgctl)
125
+ return "msgctl";
126
+ else if (num == __PNR_msgget)
127
+ return "msgget";
128
+ else if (num == __PNR_msgrcv)
129
+ return "msgrcv";
130
+ else if (num == __PNR_msgsnd)
131
+ return "msgsnd";
132
+ else if (num == __PNR_recv)
133
+ return "recv";
134
+ else if (num == __PNR_recvfrom)
135
+ return "recvfrom";
136
+ else if (num == __PNR_recvmsg)
137
+ return "recvmsg";
138
+ else if (num == __PNR_recvmmsg)
139
+ return "recvmmsg";
140
+ else if (num == __PNR_semctl)
141
+ return "semctl";
142
+ else if (num == __PNR_semget)
143
+ return "semget";
144
+ else if (num == __PNR_semtimedop)
145
+ return "semtimedop";
146
+ else if (num == __PNR_send)
147
+ return "send";
148
+ else if (num == __PNR_sendmsg)
149
+ return "sendmsg";
150
+ else if (num == __PNR_sendmmsg)
151
+ return "sendmmsg";
152
+ else if (num == __PNR_sendto)
153
+ return "sendto";
154
+ else if (num == __PNR_setsockopt)
155
+ return "setsockopt";
156
+ else if (num == __PNR_shmat)
157
+ return "shmat";
158
+ else if (num == __PNR_shmdt)
159
+ return "shmdt";
160
+ else if (num == __PNR_shmget)
161
+ return "shmget";
162
+ else if (num == __PNR_shmctl)
163
+ return "shmctl";
164
+ else if (num == __PNR_shutdown)
165
+ return "shutdown";
166
+ else if (num == __PNR_socket)
167
+ return "socket";
168
+ else if (num == __PNR_socketpair)
169
+ return "socketpair";
170
+
171
+ return s390_syscall_resolve_num(num);
172
+ }
28
173
 
29
174
  /**
30
175
  * Convert a multiplexed pseudo syscall into a direct syscall
@@ -107,8 +252,8 @@ static int _s390_syscall_demux(int syscall)
107
252
  /* semctl */
108
253
  return 394;
109
254
  case -204:
110
- /* semtimedop - not defined */
111
- return __NR_SCMP_UNDEF;
255
+ /* semtimedop */
256
+ return 392;
112
257
  case -211:
113
258
  /* msgsnd */
114
259
  return 400;
@@ -231,6 +376,9 @@ static int _s390_syscall_mux(int syscall)
231
376
  case 396:
232
377
  /* shmctl */
233
378
  return -224;
379
+ case 392:
380
+ /* semtimedop */
381
+ return -204;
234
382
  }
235
383
 
236
384
  return __NR_SCMP_ERROR;
@@ -448,3 +596,14 @@ add_return:
448
596
  free(rule_dup);
449
597
  return rc;
450
598
  }
599
+
600
+ const struct arch_def arch_def_s390 = {
601
+ .token = SCMP_ARCH_S390,
602
+ .token_bpf = AUDIT_ARCH_S390,
603
+ .size = ARCH_SIZE_32,
604
+ .endian = ARCH_ENDIAN_BIG,
605
+ .syscall_resolve_name = s390_syscall_resolve_name_munge,
606
+ .syscall_resolve_num = s390_syscall_resolve_num_munge,
607
+ .syscall_rewrite = s390_syscall_rewrite,
608
+ .rule_add = s390_rule_add,
609
+ };
@@ -6,24 +6,8 @@
6
6
  #ifndef _ARCH_S390_H
7
7
  #define _ARCH_S390_H
8
8
 
9
- #include <inttypes.h>
10
-
11
9
  #include "arch.h"
12
- #include "db.h"
13
- #include "system.h"
14
-
15
- #define s390_arg_count_max 6
16
-
17
- extern const struct arch_def arch_def_s390;
18
- #define s390_arg_offset(x) (offsetof(struct seccomp_data, args[x]))
19
-
20
- int s390_syscall_resolve_name(const char *name);
21
- const char *s390_syscall_resolve_num(int num);
22
-
23
- const struct arch_syscall_def *s390_syscall_iterate(unsigned int spot);
24
-
25
- int s390_syscall_rewrite(int *syscall);
26
10
 
27
- int s390_rule_add(struct db_filter *db, struct db_api_rule_list *rule);
11
+ ARCH_DECL(s390)
28
12
 
29
13
  #endif
@@ -8,6 +8,8 @@
8
8
  #include <string.h>
9
9
  #include <linux/audit.h>
10
10
 
11
+ #include "db.h"
12
+ #include "syscalls.h"
11
13
  #include "arch.h"
12
14
  #include "arch-s390x.h"
13
15
 
@@ -15,16 +17,159 @@
15
17
  #define __s390x_NR_socketcall 102
16
18
  #define __s390x_NR_ipc 117
17
19
 
18
- const struct arch_def arch_def_s390x = {
19
- .token = SCMP_ARCH_S390X,
20
- .token_bpf = AUDIT_ARCH_S390X,
21
- .size = ARCH_SIZE_64,
22
- .endian = ARCH_ENDIAN_BIG,
23
- .syscall_resolve_name = s390x_syscall_resolve_name,
24
- .syscall_resolve_num = s390x_syscall_resolve_num,
25
- .syscall_rewrite = s390x_syscall_rewrite,
26
- .rule_add = s390x_rule_add,
27
- };
20
+ /**
21
+ * Resolve a syscall name to a number
22
+ * @param name the syscall name
23
+ *
24
+ * Resolve the given syscall name to the syscall number using the syscall table.
25
+ * Returns the syscall number on success, including negative pseudo syscall
26
+ * numbers; returns __NR_SCMP_ERROR on failure.
27
+ *
28
+ */
29
+ int s390x_syscall_resolve_name_munge(const char *name)
30
+ {
31
+ if (strcmp(name, "accept") == 0)
32
+ return __PNR_accept;
33
+ if (strcmp(name, "accept4") == 0)
34
+ return __PNR_accept4;
35
+ else if (strcmp(name, "bind") == 0)
36
+ return __PNR_bind;
37
+ else if (strcmp(name, "connect") == 0)
38
+ return __PNR_connect;
39
+ else if (strcmp(name, "getpeername") == 0)
40
+ return __PNR_getpeername;
41
+ else if (strcmp(name, "getsockname") == 0)
42
+ return __PNR_getsockname;
43
+ else if (strcmp(name, "getsockopt") == 0)
44
+ return __PNR_getsockopt;
45
+ else if (strcmp(name, "listen") == 0)
46
+ return __PNR_listen;
47
+ else if (strcmp(name, "msgctl") == 0)
48
+ return __PNR_msgctl;
49
+ else if (strcmp(name, "msgget") == 0)
50
+ return __PNR_msgget;
51
+ else if (strcmp(name, "msgrcv") == 0)
52
+ return __PNR_msgrcv;
53
+ else if (strcmp(name, "msgsnd") == 0)
54
+ return __PNR_msgsnd;
55
+ else if (strcmp(name, "recv") == 0)
56
+ return __PNR_recv;
57
+ else if (strcmp(name, "recvfrom") == 0)
58
+ return __PNR_recvfrom;
59
+ else if (strcmp(name, "recvmsg") == 0)
60
+ return __PNR_recvmsg;
61
+ else if (strcmp(name, "recvmmsg") == 0)
62
+ return __PNR_recvmmsg;
63
+ else if (strcmp(name, "semctl") == 0)
64
+ return __PNR_semctl;
65
+ else if (strcmp(name, "semget") == 0)
66
+ return __PNR_semget;
67
+ else if (strcmp(name, "semtimedop") == 0)
68
+ return __PNR_semtimedop;
69
+ else if (strcmp(name, "send") == 0)
70
+ return __PNR_send;
71
+ else if (strcmp(name, "sendmsg") == 0)
72
+ return __PNR_sendmsg;
73
+ else if (strcmp(name, "sendmmsg") == 0)
74
+ return __PNR_sendmmsg;
75
+ else if (strcmp(name, "sendto") == 0)
76
+ return __PNR_sendto;
77
+ else if (strcmp(name, "setsockopt") == 0)
78
+ return __PNR_setsockopt;
79
+ else if (strcmp(name, "shmat") == 0)
80
+ return __PNR_shmat;
81
+ else if (strcmp(name, "shmdt") == 0)
82
+ return __PNR_shmdt;
83
+ else if (strcmp(name, "shmget") == 0)
84
+ return __PNR_shmget;
85
+ else if (strcmp(name, "shmctl") == 0)
86
+ return __PNR_shmctl;
87
+ else if (strcmp(name, "shutdown") == 0)
88
+ return __PNR_shutdown;
89
+ else if (strcmp(name, "socket") == 0)
90
+ return __PNR_socket;
91
+ else if (strcmp(name, "socketpair") == 0)
92
+ return __PNR_socketpair;
93
+
94
+ return s390x_syscall_resolve_name(name);
95
+ }
96
+
97
+ /**
98
+ * Resolve a syscall number to a name
99
+ * @param num the syscall number
100
+ *
101
+ * Resolve the given syscall number to the syscall name using the syscall table.
102
+ * Returns a pointer to the syscall name string on success, including pseudo
103
+ * syscall names; returns NULL on failure.
104
+ *
105
+ */
106
+ const char *s390x_syscall_resolve_num_munge(int num)
107
+ {
108
+ if (num == __PNR_accept)
109
+ return "accept";
110
+ else if (num == __PNR_accept4)
111
+ return "accept4";
112
+ else if (num == __PNR_bind)
113
+ return "bind";
114
+ else if (num == __PNR_connect)
115
+ return "connect";
116
+ else if (num == __PNR_getpeername)
117
+ return "getpeername";
118
+ else if (num == __PNR_getsockname)
119
+ return "getsockname";
120
+ else if (num == __PNR_getsockopt)
121
+ return "getsockopt";
122
+ else if (num == __PNR_listen)
123
+ return "listen";
124
+ else if (num == __PNR_msgctl)
125
+ return "msgctl";
126
+ else if (num == __PNR_msgget)
127
+ return "msgget";
128
+ else if (num == __PNR_msgrcv)
129
+ return "msgrcv";
130
+ else if (num == __PNR_msgsnd)
131
+ return "msgsnd";
132
+ else if (num == __PNR_recv)
133
+ return "recv";
134
+ else if (num == __PNR_recvfrom)
135
+ return "recvfrom";
136
+ else if (num == __PNR_recvmsg)
137
+ return "recvmsg";
138
+ else if (num == __PNR_recvmmsg)
139
+ return "recvmmsg";
140
+ else if (num == __PNR_semctl)
141
+ return "semctl";
142
+ else if (num == __PNR_semget)
143
+ return "semget";
144
+ else if (num == __PNR_semtimedop)
145
+ return "semtimedop";
146
+ else if (num == __PNR_send)
147
+ return "send";
148
+ else if (num == __PNR_sendmsg)
149
+ return "sendmsg";
150
+ else if (num == __PNR_sendmmsg)
151
+ return "sendmmsg";
152
+ else if (num == __PNR_sendto)
153
+ return "sendto";
154
+ else if (num == __PNR_setsockopt)
155
+ return "setsockopt";
156
+ else if (num == __PNR_shmat)
157
+ return "shmat";
158
+ else if (num == __PNR_shmdt)
159
+ return "shmdt";
160
+ else if (num == __PNR_shmget)
161
+ return "shmget";
162
+ else if (num == __PNR_shmctl)
163
+ return "shmctl";
164
+ else if (num == __PNR_shutdown)
165
+ return "shutdown";
166
+ else if (num == __PNR_socket)
167
+ return "socket";
168
+ else if (num == __PNR_socketpair)
169
+ return "socketpair";
170
+
171
+ return s390x_syscall_resolve_num(num);
172
+ }
28
173
 
29
174
  /**
30
175
  * Convert a multiplexed pseudo socket syscall into a direct syscall
@@ -450,3 +595,14 @@ add_return:
450
595
  free(rule_dup);
451
596
  return rc;
452
597
  }
598
+
599
+ const struct arch_def arch_def_s390x = {
600
+ .token = SCMP_ARCH_S390X,
601
+ .token_bpf = AUDIT_ARCH_S390X,
602
+ .size = ARCH_SIZE_64,
603
+ .endian = ARCH_ENDIAN_BIG,
604
+ .syscall_resolve_name = s390x_syscall_resolve_name_munge,
605
+ .syscall_resolve_num = s390x_syscall_resolve_num_munge,
606
+ .syscall_rewrite = s390x_syscall_rewrite,
607
+ .rule_add = s390x_rule_add,
608
+ };