immunio 1.2.1 → 2.0.2

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 (291) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -5
  3. data/ext/immunio/Rakefile +14 -6
  4. data/lib/immunio/context.rb +2 -0
  5. data/lib/immunio/plugins/action_view.rb +7 -668
  6. data/lib/immunio/plugins/action_view/action_view.rb +22 -0
  7. data/lib/immunio/plugins/action_view/active_support_hash.rb +29 -0
  8. data/lib/immunio/plugins/action_view/cache_store.rb +24 -0
  9. data/lib/immunio/plugins/action_view/erubi.rb +38 -0
  10. data/lib/immunio/plugins/action_view/erubis.rb +39 -0
  11. data/lib/immunio/plugins/action_view/fragment_caching.rb +29 -0
  12. data/lib/immunio/plugins/action_view/haml.rb +46 -0
  13. data/lib/immunio/plugins/action_view/slim.rb +42 -0
  14. data/lib/immunio/plugins/action_view/template.rb +431 -0
  15. data/lib/immunio/plugins/action_view/template_rendering.rb +45 -0
  16. data/lib/immunio/plugins/http_tracker.rb +2 -0
  17. data/lib/immunio/plugins/io.rb +34 -0
  18. data/lib/immunio/version.rb +1 -1
  19. data/lua-hooks/Makefile +36 -9
  20. data/lua-hooks/ext/luajit/COPYRIGHT +1 -1
  21. data/lua-hooks/ext/luajit/Makefile +22 -15
  22. data/lua-hooks/ext/luajit/README +2 -2
  23. data/lua-hooks/ext/luajit/doc/bluequad-print.css +1 -1
  24. data/lua-hooks/ext/luajit/doc/bluequad.css +1 -1
  25. data/lua-hooks/ext/luajit/doc/changes.html +69 -3
  26. data/lua-hooks/ext/luajit/doc/contact.html +10 -3
  27. data/lua-hooks/ext/luajit/doc/ext_c_api.html +2 -2
  28. data/lua-hooks/ext/luajit/doc/ext_ffi.html +2 -2
  29. data/lua-hooks/ext/luajit/doc/ext_ffi_api.html +2 -2
  30. data/lua-hooks/ext/luajit/doc/ext_ffi_semantics.html +3 -4
  31. data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +2 -2
  32. data/lua-hooks/ext/luajit/doc/ext_jit.html +3 -3
  33. data/lua-hooks/ext/luajit/doc/ext_profiler.html +2 -2
  34. data/lua-hooks/ext/luajit/doc/extensions.html +47 -20
  35. data/lua-hooks/ext/luajit/doc/faq.html +2 -2
  36. data/lua-hooks/ext/luajit/doc/install.html +74 -45
  37. data/lua-hooks/ext/luajit/doc/luajit.html +5 -5
  38. data/lua-hooks/ext/luajit/doc/running.html +3 -3
  39. data/lua-hooks/ext/luajit/doc/status.html +13 -8
  40. data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +1 -1
  41. data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +1 -1
  42. data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +1 -1
  43. data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +1 -1
  44. data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +8 -5
  45. data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +66 -11
  46. data/lua-hooks/ext/luajit/dynasm/dasm_mips64.lua +12 -0
  47. data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +1 -1
  48. data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +1 -1
  49. data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +1 -1
  50. data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +1 -1
  51. data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +1 -1
  52. data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +5 -1
  53. data/lua-hooks/ext/luajit/dynasm/dynasm.lua +2 -2
  54. data/lua-hooks/ext/luajit/etc/luajit.1 +1 -1
  55. data/lua-hooks/ext/luajit/etc/luajit.pc +1 -1
  56. data/lua-hooks/ext/luajit/src/Makefile +15 -11
  57. data/lua-hooks/ext/luajit/src/Makefile.dep +16 -16
  58. data/lua-hooks/ext/luajit/src/host/buildvm.c +2 -2
  59. data/lua-hooks/ext/luajit/src/host/buildvm.h +1 -1
  60. data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +9 -4
  61. data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +2 -2
  62. data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +1 -1
  63. data/lua-hooks/ext/luajit/src/host/buildvm_libbc.h +14 -3
  64. data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +27 -3
  65. data/lua-hooks/ext/luajit/src/host/genlibbc.lua +1 -1
  66. data/lua-hooks/ext/luajit/src/host/genminilua.lua +6 -5
  67. data/lua-hooks/ext/luajit/src/host/minilua.c +1 -1
  68. data/lua-hooks/ext/luajit/src/jit/bc.lua +1 -1
  69. data/lua-hooks/ext/luajit/src/jit/bcsave.lua +8 -8
  70. data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +2 -2
  71. data/lua-hooks/ext/luajit/src/jit/dis_arm64.lua +1216 -0
  72. data/lua-hooks/ext/luajit/src/jit/dis_arm64be.lua +12 -0
  73. data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +35 -20
  74. data/lua-hooks/ext/luajit/src/jit/dis_mips64.lua +17 -0
  75. data/lua-hooks/ext/luajit/src/jit/dis_mips64el.lua +17 -0
  76. data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +1 -1
  77. data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +2 -2
  78. data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +1 -1
  79. data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +7 -4
  80. data/lua-hooks/ext/luajit/src/jit/dump.lua +17 -12
  81. data/lua-hooks/ext/luajit/src/jit/p.lua +3 -2
  82. data/lua-hooks/ext/luajit/src/jit/v.lua +2 -2
  83. data/lua-hooks/ext/luajit/src/jit/zone.lua +1 -1
  84. data/lua-hooks/ext/luajit/src/lauxlib.h +14 -20
  85. data/lua-hooks/ext/luajit/src/lib_aux.c +38 -27
  86. data/lua-hooks/ext/luajit/src/lib_base.c +12 -5
  87. data/lua-hooks/ext/luajit/src/lib_bit.c +1 -1
  88. data/lua-hooks/ext/luajit/src/lib_debug.c +5 -5
  89. data/lua-hooks/ext/luajit/src/lib_ffi.c +2 -2
  90. data/lua-hooks/ext/luajit/src/lib_init.c +16 -16
  91. data/lua-hooks/ext/luajit/src/lib_io.c +6 -7
  92. data/lua-hooks/ext/luajit/src/lib_jit.c +14 -4
  93. data/lua-hooks/ext/luajit/src/lib_math.c +1 -5
  94. data/lua-hooks/ext/luajit/src/lib_os.c +1 -1
  95. data/lua-hooks/ext/luajit/src/lib_package.c +14 -23
  96. data/lua-hooks/ext/luajit/src/lib_string.c +1 -5
  97. data/lua-hooks/ext/luajit/src/lib_table.c +21 -1
  98. data/lua-hooks/ext/luajit/src/lj.supp +3 -3
  99. data/lua-hooks/ext/luajit/src/lj_alloc.c +174 -83
  100. data/lua-hooks/ext/luajit/src/lj_api.c +97 -18
  101. data/lua-hooks/ext/luajit/src/lj_arch.h +54 -22
  102. data/lua-hooks/ext/luajit/src/lj_asm.c +172 -53
  103. data/lua-hooks/ext/luajit/src/lj_asm.h +1 -1
  104. data/lua-hooks/ext/luajit/src/lj_asm_arm.h +19 -16
  105. data/lua-hooks/ext/luajit/src/lj_asm_arm64.h +2022 -0
  106. data/lua-hooks/ext/luajit/src/lj_asm_mips.h +564 -158
  107. data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +19 -18
  108. data/lua-hooks/ext/luajit/src/lj_asm_x86.h +578 -92
  109. data/lua-hooks/ext/luajit/src/lj_bc.c +1 -1
  110. data/lua-hooks/ext/luajit/src/lj_bc.h +1 -1
  111. data/lua-hooks/ext/luajit/src/lj_bcdump.h +1 -1
  112. data/lua-hooks/ext/luajit/src/lj_bcread.c +1 -1
  113. data/lua-hooks/ext/luajit/src/lj_bcwrite.c +1 -1
  114. data/lua-hooks/ext/luajit/src/lj_buf.c +1 -1
  115. data/lua-hooks/ext/luajit/src/lj_buf.h +1 -1
  116. data/lua-hooks/ext/luajit/src/lj_carith.c +1 -1
  117. data/lua-hooks/ext/luajit/src/lj_carith.h +1 -1
  118. data/lua-hooks/ext/luajit/src/lj_ccall.c +172 -7
  119. data/lua-hooks/ext/luajit/src/lj_ccall.h +21 -5
  120. data/lua-hooks/ext/luajit/src/lj_ccallback.c +71 -17
  121. data/lua-hooks/ext/luajit/src/lj_ccallback.h +1 -1
  122. data/lua-hooks/ext/luajit/src/lj_cconv.c +4 -2
  123. data/lua-hooks/ext/luajit/src/lj_cconv.h +1 -1
  124. data/lua-hooks/ext/luajit/src/lj_cdata.c +7 -5
  125. data/lua-hooks/ext/luajit/src/lj_cdata.h +1 -1
  126. data/lua-hooks/ext/luajit/src/lj_clib.c +5 -5
  127. data/lua-hooks/ext/luajit/src/lj_clib.h +1 -1
  128. data/lua-hooks/ext/luajit/src/lj_cparse.c +11 -6
  129. data/lua-hooks/ext/luajit/src/lj_cparse.h +1 -1
  130. data/lua-hooks/ext/luajit/src/lj_crecord.c +70 -14
  131. data/lua-hooks/ext/luajit/src/lj_crecord.h +1 -1
  132. data/lua-hooks/ext/luajit/src/lj_ctype.c +1 -1
  133. data/lua-hooks/ext/luajit/src/lj_ctype.h +8 -8
  134. data/lua-hooks/ext/luajit/src/lj_debug.c +1 -1
  135. data/lua-hooks/ext/luajit/src/lj_debug.h +1 -1
  136. data/lua-hooks/ext/luajit/src/lj_def.h +6 -9
  137. data/lua-hooks/ext/luajit/src/lj_dispatch.c +3 -3
  138. data/lua-hooks/ext/luajit/src/lj_dispatch.h +2 -1
  139. data/lua-hooks/ext/luajit/src/lj_emit_arm.h +5 -4
  140. data/lua-hooks/ext/luajit/src/lj_emit_arm64.h +419 -0
  141. data/lua-hooks/ext/luajit/src/lj_emit_mips.h +100 -20
  142. data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +4 -4
  143. data/lua-hooks/ext/luajit/src/lj_emit_x86.h +116 -25
  144. data/lua-hooks/ext/luajit/src/lj_err.c +34 -13
  145. data/lua-hooks/ext/luajit/src/lj_err.h +1 -1
  146. data/lua-hooks/ext/luajit/src/lj_errmsg.h +1 -1
  147. data/lua-hooks/ext/luajit/src/lj_ff.h +1 -1
  148. data/lua-hooks/ext/luajit/src/lj_ffrecord.c +58 -49
  149. data/lua-hooks/ext/luajit/src/lj_ffrecord.h +1 -1
  150. data/lua-hooks/ext/luajit/src/lj_frame.h +33 -6
  151. data/lua-hooks/ext/luajit/src/lj_func.c +4 -2
  152. data/lua-hooks/ext/luajit/src/lj_func.h +1 -1
  153. data/lua-hooks/ext/luajit/src/lj_gc.c +16 -7
  154. data/lua-hooks/ext/luajit/src/lj_gc.h +1 -1
  155. data/lua-hooks/ext/luajit/src/lj_gdbjit.c +31 -1
  156. data/lua-hooks/ext/luajit/src/lj_gdbjit.h +1 -1
  157. data/lua-hooks/ext/luajit/src/lj_ir.c +69 -96
  158. data/lua-hooks/ext/luajit/src/lj_ir.h +29 -18
  159. data/lua-hooks/ext/luajit/src/lj_ircall.h +24 -30
  160. data/lua-hooks/ext/luajit/src/lj_iropt.h +9 -9
  161. data/lua-hooks/ext/luajit/src/lj_jit.h +67 -9
  162. data/lua-hooks/ext/luajit/src/lj_lex.c +1 -1
  163. data/lua-hooks/ext/luajit/src/lj_lex.h +1 -1
  164. data/lua-hooks/ext/luajit/src/lj_lib.c +1 -1
  165. data/lua-hooks/ext/luajit/src/lj_lib.h +1 -1
  166. data/lua-hooks/ext/luajit/src/lj_load.c +1 -1
  167. data/lua-hooks/ext/luajit/src/lj_mcode.c +11 -10
  168. data/lua-hooks/ext/luajit/src/lj_mcode.h +1 -1
  169. data/lua-hooks/ext/luajit/src/lj_meta.c +1 -1
  170. data/lua-hooks/ext/luajit/src/lj_meta.h +1 -1
  171. data/lua-hooks/ext/luajit/src/lj_obj.c +1 -1
  172. data/lua-hooks/ext/luajit/src/lj_obj.h +7 -3
  173. data/lua-hooks/ext/luajit/src/lj_opt_dce.c +1 -1
  174. data/lua-hooks/ext/luajit/src/lj_opt_fold.c +84 -17
  175. data/lua-hooks/ext/luajit/src/lj_opt_loop.c +1 -1
  176. data/lua-hooks/ext/luajit/src/lj_opt_mem.c +3 -3
  177. data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +24 -22
  178. data/lua-hooks/ext/luajit/src/lj_opt_sink.c +11 -6
  179. data/lua-hooks/ext/luajit/src/lj_opt_split.c +11 -2
  180. data/lua-hooks/ext/luajit/src/lj_parse.c +9 -7
  181. data/lua-hooks/ext/luajit/src/lj_parse.h +1 -1
  182. data/lua-hooks/ext/luajit/src/lj_profile.c +1 -1
  183. data/lua-hooks/ext/luajit/src/lj_profile.h +1 -1
  184. data/lua-hooks/ext/luajit/src/lj_record.c +201 -117
  185. data/lua-hooks/ext/luajit/src/lj_record.h +1 -1
  186. data/lua-hooks/ext/luajit/src/lj_snap.c +72 -26
  187. data/lua-hooks/ext/luajit/src/lj_snap.h +1 -1
  188. data/lua-hooks/ext/luajit/src/lj_state.c +6 -6
  189. data/lua-hooks/ext/luajit/src/lj_state.h +2 -2
  190. data/lua-hooks/ext/luajit/src/lj_str.c +1 -1
  191. data/lua-hooks/ext/luajit/src/lj_str.h +1 -1
  192. data/lua-hooks/ext/luajit/src/lj_strfmt.c +7 -3
  193. data/lua-hooks/ext/luajit/src/lj_strfmt.h +1 -1
  194. data/lua-hooks/ext/luajit/src/lj_strfmt_num.c +4 -3
  195. data/lua-hooks/ext/luajit/src/lj_strscan.c +1 -1
  196. data/lua-hooks/ext/luajit/src/lj_strscan.h +1 -1
  197. data/lua-hooks/ext/luajit/src/lj_tab.c +1 -2
  198. data/lua-hooks/ext/luajit/src/lj_tab.h +1 -1
  199. data/lua-hooks/ext/luajit/src/lj_target.h +3 -3
  200. data/lua-hooks/ext/luajit/src/lj_target_arm.h +1 -1
  201. data/lua-hooks/ext/luajit/src/lj_target_arm64.h +239 -7
  202. data/lua-hooks/ext/luajit/src/lj_target_mips.h +111 -22
  203. data/lua-hooks/ext/luajit/src/lj_target_ppc.h +1 -1
  204. data/lua-hooks/ext/luajit/src/lj_target_x86.h +21 -4
  205. data/lua-hooks/ext/luajit/src/lj_trace.c +63 -18
  206. data/lua-hooks/ext/luajit/src/lj_trace.h +2 -1
  207. data/lua-hooks/ext/luajit/src/lj_traceerr.h +1 -1
  208. data/lua-hooks/ext/luajit/src/lj_udata.c +1 -1
  209. data/lua-hooks/ext/luajit/src/lj_udata.h +1 -1
  210. data/lua-hooks/ext/luajit/src/lj_vm.h +5 -1
  211. data/lua-hooks/ext/luajit/src/lj_vmevent.c +1 -1
  212. data/lua-hooks/ext/luajit/src/lj_vmevent.h +1 -1
  213. data/lua-hooks/ext/luajit/src/lj_vmmath.c +1 -1
  214. data/lua-hooks/ext/luajit/src/ljamalg.c +1 -1
  215. data/lua-hooks/ext/luajit/src/lua.h +9 -1
  216. data/lua-hooks/ext/luajit/src/luaconf.h +3 -7
  217. data/lua-hooks/ext/luajit/src/luajit.c +69 -54
  218. data/lua-hooks/ext/luajit/src/luajit.h +4 -4
  219. data/lua-hooks/ext/luajit/src/lualib.h +1 -1
  220. data/lua-hooks/ext/luajit/src/msvcbuild.bat +12 -4
  221. data/lua-hooks/ext/luajit/src/vm_arm.dasc +1 -1
  222. data/lua-hooks/ext/luajit/src/vm_arm64.dasc +255 -32
  223. data/lua-hooks/ext/luajit/src/vm_mips.dasc +26 -23
  224. data/lua-hooks/ext/luajit/src/vm_mips64.dasc +5062 -0
  225. data/lua-hooks/ext/luajit/src/vm_ppc.dasc +1 -1
  226. data/lua-hooks/ext/luajit/src/vm_x64.dasc +24 -25
  227. data/lua-hooks/ext/luajit/src/vm_x86.dasc +77 -4
  228. data/lua-hooks/libluahooks.darwin.a +0 -0
  229. data/lua-hooks/libluahooks.linux.a +0 -0
  230. data/lua-hooks/options.mk +1 -1
  231. metadata +37 -77
  232. data/lua-hooks/ext/all.c +0 -69
  233. data/lua-hooks/ext/libinjection/COPYING +0 -37
  234. data/lua-hooks/ext/libinjection/libinjection.h +0 -65
  235. data/lua-hooks/ext/libinjection/libinjection_html5.c +0 -847
  236. data/lua-hooks/ext/libinjection/libinjection_html5.h +0 -54
  237. data/lua-hooks/ext/libinjection/libinjection_sqli.c +0 -2301
  238. data/lua-hooks/ext/libinjection/libinjection_sqli.h +0 -295
  239. data/lua-hooks/ext/libinjection/libinjection_sqli_data.h +0 -9349
  240. data/lua-hooks/ext/libinjection/libinjection_xss.c +0 -531
  241. data/lua-hooks/ext/libinjection/libinjection_xss.h +0 -21
  242. data/lua-hooks/ext/libinjection/lualib.c +0 -145
  243. data/lua-hooks/ext/libinjection/module.mk +0 -5
  244. data/lua-hooks/ext/lpeg/HISTORY +0 -96
  245. data/lua-hooks/ext/lpeg/lpcap.c +0 -537
  246. data/lua-hooks/ext/lpeg/lpcap.h +0 -56
  247. data/lua-hooks/ext/lpeg/lpcode.c +0 -1014
  248. data/lua-hooks/ext/lpeg/lpcode.h +0 -40
  249. data/lua-hooks/ext/lpeg/lpeg-128.gif +0 -0
  250. data/lua-hooks/ext/lpeg/lpeg.html +0 -1445
  251. data/lua-hooks/ext/lpeg/lpprint.c +0 -244
  252. data/lua-hooks/ext/lpeg/lpprint.h +0 -36
  253. data/lua-hooks/ext/lpeg/lptree.c +0 -1303
  254. data/lua-hooks/ext/lpeg/lptree.h +0 -82
  255. data/lua-hooks/ext/lpeg/lptypes.h +0 -149
  256. data/lua-hooks/ext/lpeg/lpvm.c +0 -364
  257. data/lua-hooks/ext/lpeg/lpvm.h +0 -58
  258. data/lua-hooks/ext/lpeg/makefile +0 -55
  259. data/lua-hooks/ext/lpeg/module.mk +0 -6
  260. data/lua-hooks/ext/lpeg/re.html +0 -498
  261. data/lua-hooks/ext/lua-cmsgpack/.gitignore +0 -13
  262. data/lua-hooks/ext/lua-cmsgpack/CMakeLists.txt +0 -45
  263. data/lua-hooks/ext/lua-cmsgpack/README.md +0 -115
  264. data/lua-hooks/ext/lua-cmsgpack/lua_cmsgpack.c +0 -970
  265. data/lua-hooks/ext/lua-cmsgpack/module.mk +0 -2
  266. data/lua-hooks/ext/lua-cmsgpack/test.lua +0 -570
  267. data/lua-hooks/ext/lua-snapshot/LICENSE +0 -7
  268. data/lua-hooks/ext/lua-snapshot/Makefile +0 -12
  269. data/lua-hooks/ext/lua-snapshot/README.md +0 -18
  270. data/lua-hooks/ext/lua-snapshot/dump.lua +0 -15
  271. data/lua-hooks/ext/lua-snapshot/module.mk +0 -2
  272. data/lua-hooks/ext/lua-snapshot/snapshot.c +0 -462
  273. data/lua-hooks/ext/luautf8/README.md +0 -152
  274. data/lua-hooks/ext/luautf8/lutf8lib.c +0 -1274
  275. data/lua-hooks/ext/luautf8/module.mk +0 -2
  276. data/lua-hooks/ext/luautf8/unidata.h +0 -3064
  277. data/lua-hooks/ext/module.mk +0 -15
  278. data/lua-hooks/ext/modules.h +0 -17
  279. data/lua-hooks/ext/perf/luacpu.c +0 -114
  280. data/lua-hooks/ext/perf/lualoadavg.c +0 -40
  281. data/lua-hooks/ext/perf/luameminfo.c +0 -38
  282. data/lua-hooks/ext/perf/luaoslib.c +0 -203
  283. data/lua-hooks/ext/perf/module.mk +0 -5
  284. data/lua-hooks/ext/sha1/luasha1.c +0 -74
  285. data/lua-hooks/ext/sha1/module.mk +0 -5
  286. data/lua-hooks/ext/sha1/sha1.c +0 -145
  287. data/lua-hooks/ext/sha2/luasha256.c +0 -77
  288. data/lua-hooks/ext/sha2/module.mk +0 -5
  289. data/lua-hooks/ext/sha2/sha256.c +0 -196
  290. data/lua-hooks/ext/sysutils/lua_utils.c +0 -56
  291. data/lua-hooks/ext/sysutils/module.mk +0 -2
@@ -0,0 +1,45 @@
1
+ module Immunio
2
+ # Hook for the `ActionView::TemplateRenderer`. These are called for root
3
+ # templates.
4
+ module TemplateRendererHooks
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ Immunio::Utils.alias_method_chain self, :render_template, :immunio
9
+ end
10
+
11
+ def render_template_with_immunio(template, *args)
12
+ Request.time "plugin", "#{Module.nesting[0]}::#{__method__}" do
13
+ renderer = Template.new(template)
14
+
15
+ renderer.render @view do
16
+ Request.pause "plugin", "#{Module.nesting[0]}::#{__method__}" do
17
+ render_template_without_immunio(template, *args)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ # Hook for the `ActionView::Template`. These are called for non-root
25
+ # templates.
26
+ module TemplateHooks
27
+ extend ActiveSupport::Concern
28
+
29
+ included do
30
+ Immunio::Utils.alias_method_chain self, :render, :immunio
31
+ end
32
+
33
+ def render_with_immunio(context, *args, &block)
34
+ Request.time "plugin", "#{Module.nesting[0]}::#{__method__}" do
35
+ renderer = Template.new(self)
36
+
37
+ renderer.render context do
38
+ Request.pause "plugin", "#{Module.nesting[0]}::#{__method__}" do
39
+ render_without_immunio(context, *args, &block)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,3 +1,5 @@
1
+ require 'digest/sha1'
2
+
1
3
  require_relative "../blocked_app"
2
4
  require_relative "../errors"
3
5
 
@@ -1,5 +1,11 @@
1
1
  require_relative '../context'
2
2
 
3
+ begin
4
+ require 'open4'
5
+ rescue LoadError # rubocop:disable Lint/HandleExceptions
6
+ # Ignore
7
+ end
8
+
3
9
  module Immunio
4
10
  module IOHooks
5
11
 
@@ -64,6 +70,18 @@ module Immunio
64
70
  end
65
71
  Immunio.logger.debug { "IO: IOClassHooks created: #{IOClassHooks}" }
66
72
 
73
+ module ProcessClassHooks
74
+ IOHooks.inject self, "Process.", %w( spawn )
75
+ end
76
+ Immunio.logger.debug { "Shell: ProcessClassHooks created: #{ProcessClassHooks}" }
77
+
78
+ if defined? Open4
79
+ module Open4ClassHooks
80
+ IOHooks.inject self, "Open4.", %w( popen4 open4 )
81
+ end
82
+ Immunio.logger.debug { "Shell: Open4ClassHooks created: #{Open4ClassHooks}" }
83
+ end
84
+
67
85
  module KernelModuleHooks
68
86
  # exec() is not included currently as it replaces the running process
69
87
  # and would never get primed correctly
@@ -107,6 +125,22 @@ Immunio::Plugin.load 'IO', feature: 'file_io', hooks: %w( file_io ) do |plugin|
107
125
  plugin.loaded! RUBY_VERSION
108
126
  end
109
127
 
128
+ #Add Process hooks if enabled
129
+ Immunio::Plugin.load 'Process', feature: 'shell_command', hooks: %w( shell_io ) do |plugin|
130
+
131
+ Process.extend Immunio::ProcessClassHooks
132
+ plugin.loaded! RUBY_VERSION
133
+ end
134
+
135
+ if defined? Open4
136
+ #Add Open4 hooks if enabled
137
+ Immunio::Plugin.load 'Open4', feature: 'shell_command', hooks: %w( shell_io ) do |plugin|
138
+
139
+ Open4.extend Immunio::Open4ClassHooks
140
+ plugin.loaded! Open4::VERSION
141
+ end
142
+ end
143
+
110
144
  # Add Kernel hooks if enabled
111
145
  Immunio::Plugin.load 'Kernel (shell_command)',
112
146
  feature: 'shell_command',
@@ -1,5 +1,5 @@
1
1
  module Immunio
2
2
  AGENT_TYPE = "agent-ruby"
3
- VERSION = "1.2.1"
3
+ VERSION = "2.0.2"
4
4
  VM_VERSION = "2.2.0"
5
5
  end
@@ -1,11 +1,15 @@
1
1
  MODULES := lib ext
2
2
 
3
+ include options.mk
4
+
3
5
  # Source of extensions compiled w/ Lua's source.
4
6
  # Only include .c files that can't be directly included in ext/all.c.
5
7
 
6
8
  # All these source variables are filled in by the module.mk files
7
9
  SRC :=
8
10
 
11
+ EXT_SRC :=
12
+
9
13
  CXX_SRC :=
10
14
 
11
15
  SPECIAL_SRC :=
@@ -26,6 +30,9 @@ include ext/module.mk
26
30
  OBJ := \
27
31
  $(patsubst %.c,%.o,$(filter %.c,$(SRC))) \
28
32
 
33
+ EXT_OBJ := \
34
+ $(patsubst %.c,%.o,$(filter %.c,$(EXT_SRC)))
35
+
29
36
  SPECIAL_OBJ := \
30
37
  $(patsubst %.c,%.o,$(filter %.c,$(SPECIAL_SRC))) \
31
38
 
@@ -43,8 +50,6 @@ CLI = ./lua
43
50
  SO_OUT = libimmunio.so
44
51
  A_OUT = libimmunio.a
45
52
 
46
- include options.mk
47
-
48
53
  INIT_HOOK = hooks/__init__.lua
49
54
  INIT_NOPROTECT_HOOK = hooks/__init__noprotect.lua
50
55
  HOOK_SRCS := $(wildcard hooks/*.lua) hooks/__init__.lua hooks/__init__noprotect.lua
@@ -55,13 +60,19 @@ HOOKS_SRCS_TARBALL = hooks_srcs.tgz
55
60
  LUAJIT_OUT = libluajit.a
56
61
  LUAJIT_OBJ = ext/luajit/src/${LUAJIT_OUT}
57
62
 
63
+ GSP_OUT = libgspcore.a
64
+ GSP_OBJ = ext/lua-sqlparser/general_sql_parser/lib/${GSP_OUT}
65
+ GSP_COLLECTION_OUT = libgspcollection.a
66
+ GSP_COLLECTION_OBJ = ext/lua-sqlparser/general_sql_parser/lib/${GSP_COLLECTION_OUT}
67
+
68
+
58
69
  # Build lua, run tests, and create hooks archive
59
70
  all: ${CLI} ${INIT_HOOK} ${INIT_NOPROTECT_HOOK} ${HOOKS_TARBALL} ${HOOKS_SRCS_TARBALL}
60
71
 
61
- ${SO_OUT}: ${OBJ} ${SPECIAL_OBJ} ${LUAJIT_OBJ}
72
+ ${SO_OUT}: ${OBJ} ${EXT_OBJ} ${SPECIAL_OBJ} ${LUAJIT_OBJ}
62
73
  ${CC} -shared ${CFLAGS} ${LIBS} -o $@ -lc $^
63
74
 
64
- ${A_OUT}: ${OBJ} ${SPECIAL_OBJ}
75
+ ${A_OUT}: ${OBJ} ${EXT_OBJ} ${SPECIAL_OBJ}
65
76
  ${AR} -rcus $@ $^
66
77
 
67
78
  ${LUAJIT_OUT}: ${LUAJIT_OBJ}
@@ -74,13 +85,26 @@ else
74
85
  cd ext/luajit/src && make XCFLAGS="${LUAJIT_XCFLAGS}" ${LUAJIT_OUT}
75
86
  endif
76
87
 
88
+ ${GSP_OUT}: ${GSP_OBJ}
89
+ cp $^ $@
90
+
91
+ ${GSP_OBJ}:
92
+ cd ext/lua-sqlparser/general_sql_parser && make
93
+
94
+ ${GSP_COLLECTION_OUT}: ${GSP_COLLECTION_OBJ}
95
+ cp $^ $@
96
+
97
+ ${GSP_COLLECTION_OBJ}:
98
+ cd ext/lua-sqlparser/general_sql_parser && make
99
+
77
100
  # Build lua executable for testing and compilation
78
101
  # Seperate compilation as we need the LUA_UNSAFE_MODE flag set...
79
102
  ${CLI}: CFLAGS += ${UNSAFE_FLAG}
80
103
  ${CLI}: CXXFLAGS += ${UNSAFE_FLAG}
81
- ${CLI}: ${CLI_SRC} ${SRC} ${SPECIAL_OBJ} ${CXX_OBJ} ${LUAJIT_OBJ}
104
+ ${CLI}: ${CLI_SRC} ${SRC} ${EXT_OBJ} ${SPECIAL_OBJ} ${CXX_OBJ} ${LUAJIT_OBJ} ${GSP_OBJ} ${GSP_COLLECTION_OBJ}
82
105
  ${CC} ${CFLAGS} ${LDFLAGS} -o $@ $^ ${LIBS}
83
106
 
107
+
84
108
  # Concatenate init hooks into one __init__.lua
85
109
  ${INIT_NOPROTECT_HOOK}: ${LUA_BASE_SRC} ${CLI}
86
110
  rm -f hooks/__init__noprotect.lua
@@ -100,11 +124,13 @@ ${HOOKS_TARBALL}: ${MIN_SRCS}
100
124
  tar -czf $@ -C build .
101
125
 
102
126
  ${HOOKS_SRCS_TARBALL}: ${HOOK_SRCS}
103
- tar -czf $@ -C hooks . --exclude="init"
127
+ tar -czf $@ --exclude "init" -C hooks .
104
128
 
105
- ${SPECIAL_OBJ}: CFLAGS += ${OPTIMIZE_NONE}
129
+ ${SPECIAL_OBJ}: CFLAGS += ${OPTIMIZE_NONE} -Wall
106
130
 
107
- ${CLI_OBJ} ${OBJ} ${CXX_OBJ} ${LUAJIT_OBJ}: CFLAGS += ${OPTIMIZE_FULL}
131
+ # XXX cast warning disabled for antiSqlInjection.c code written for 32 bit that's using void * as a wildcard type.
132
+ ${EXT_OBJ}: CFLAGS += -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
133
+ ${CLI_OBJ} ${OBJ} ${CXX_OBJ} ${LUAJIT_OBJ}: CFLAGS += ${OPTIMIZE_FULL} -Wall
108
134
 
109
135
  %.o: %.c
110
136
  ${CC} ${CFLAGS} -c ${INCS} -o $@ $<
@@ -118,8 +144,9 @@ cleanhooks:
118
144
  rm -f build/*.lua
119
145
 
120
146
  clean: cleanhooks
121
- rm -f ${CLI} ${CLI_OBJ} ${OBJ} ${CXX_OBJ} ${SPECIAL_OBJ} ${SO_OUT} ${A_OUT} ${LUAJIT_OUT}
147
+ rm -f ${CLI} ${CLI_OBJ} ${OBJ} ${CXX_OBJ} ${EXT_OBJ} ${SPECIAL_OBJ} ${SO_OUT} ${A_OUT} ${LUAJIT_OUT} ${GSP_OBJ}
122
148
  cd ext/luajit && make clean
149
+ cd ext/lua-sqlparser/general_sql_parser && make clean
123
150
  rm -f test_failed
124
151
  rm -rf build
125
152
  find . -name \*.o -delete
@@ -1,7 +1,7 @@
1
1
  ===============================================================================
2
2
  LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
3
3
 
4
- Copyright (C) 2005-2016 Mike Pall. All rights reserved.
4
+ Copyright (C) 2005-2017 Mike Pall. All rights reserved.
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  of this software and associated documentation files (the "Software"), to deal
@@ -10,13 +10,13 @@
10
10
  # For MSVC, please follow the instructions given in src/msvcbuild.bat.
11
11
  # For MinGW and Cygwin, cd to src and run make with the Makefile there.
12
12
  #
13
- # Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
13
+ # Copyright (C) 2005-2017 Mike Pall. See Copyright Notice in luajit.h
14
14
  ##############################################################################
15
15
 
16
16
  MAJVER= 2
17
17
  MINVER= 1
18
18
  RELVER= 0
19
- PREREL= -beta2
19
+ PREREL= -beta3
20
20
  VERSION= $(MAJVER).$(MINVER).$(RELVER)$(PREREL)
21
21
  ABIVER= 5.1
22
22
 
@@ -47,17 +47,18 @@ INSTALL_PKGCONFIG= $(INSTALL_LIB)/pkgconfig
47
47
  INSTALL_TNAME= luajit-$(VERSION)
48
48
  INSTALL_TSYMNAME= luajit
49
49
  INSTALL_ANAME= libluajit-$(ABIVER).a
50
- INSTALL_SONAME= libluajit-$(ABIVER).so.$(MAJVER).$(MINVER).$(RELVER)
51
- INSTALL_SOSHORT= libluajit-$(ABIVER).so
52
- INSTALL_DYLIBNAME= libluajit-$(ABIVER).$(MAJVER).$(MINVER).$(RELVER).dylib
50
+ INSTALL_SOSHORT1= libluajit-$(ABIVER).so
51
+ INSTALL_SOSHORT2= libluajit-$(ABIVER).so.$(MAJVER)
52
+ INSTALL_SONAME= $(INSTALL_SOSHORT2).$(MINVER).$(RELVER)
53
53
  INSTALL_DYLIBSHORT1= libluajit-$(ABIVER).dylib
54
54
  INSTALL_DYLIBSHORT2= libluajit-$(ABIVER).$(MAJVER).dylib
55
+ INSTALL_DYLIBNAME= libluajit-$(ABIVER).$(MAJVER).$(MINVER).$(RELVER).dylib
55
56
  INSTALL_PCNAME= luajit.pc
56
57
 
57
58
  INSTALL_STATIC= $(INSTALL_LIB)/$(INSTALL_ANAME)
58
59
  INSTALL_DYN= $(INSTALL_LIB)/$(INSTALL_SONAME)
59
- INSTALL_SHORT1= $(INSTALL_LIB)/$(INSTALL_SOSHORT)
60
- INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT)
60
+ INSTALL_SHORT1= $(INSTALL_LIB)/$(INSTALL_SOSHORT1)
61
+ INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT2)
61
62
  INSTALL_T= $(INSTALL_BIN)/$(INSTALL_TNAME)
62
63
  INSTALL_TSYM= $(INSTALL_BIN)/$(INSTALL_TSYMNAME)
63
64
  INSTALL_PC= $(INSTALL_PKGCONFIG)/$(INSTALL_PCNAME)
@@ -85,16 +86,22 @@ FILE_MAN= luajit.1
85
86
  FILE_PC= luajit.pc
86
87
  FILES_INC= lua.h lualib.h lauxlib.h luaconf.h lua.hpp luajit.h
87
88
  FILES_JITLIB= bc.lua bcsave.lua dump.lua p.lua v.lua zone.lua \
88
- dis_x86.lua dis_x64.lua dis_arm.lua dis_ppc.lua \
89
- dis_mips.lua dis_mipsel.lua vmdef.lua
89
+ dis_x86.lua dis_x64.lua dis_arm.lua dis_arm64.lua \
90
+ dis_arm64be.lua dis_ppc.lua dis_mips.lua dis_mipsel.lua \
91
+ dis_mips64.lua dis_mips64el.lua vmdef.lua
90
92
 
91
93
  ifeq (,$(findstring Windows,$(OS)))
92
- ifeq (Darwin,$(shell uname -s))
93
- INSTALL_SONAME= $(INSTALL_DYLIBNAME)
94
- INSTALL_SHORT1= $(INSTALL_LIB)/$(INSTALL_DYLIBSHORT1)
95
- INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_DYLIBSHORT2)
96
- LDCONFIG= :
97
- endif
94
+ HOST_SYS:= $(shell uname -s)
95
+ else
96
+ HOST_SYS= Windows
97
+ endif
98
+ TARGET_SYS?= $(HOST_SYS)
99
+
100
+ ifeq (Darwin,$(TARGET_SYS))
101
+ INSTALL_SONAME= $(INSTALL_DYLIBNAME)
102
+ INSTALL_SOSHORT1= $(INSTALL_DYLIBSHORT1)
103
+ INSTALL_SOSHORT2= $(INSTALL_DYLIBSHORT2)
104
+ LDCONFIG= :
98
105
  endif
99
106
 
100
107
  ##############################################################################
@@ -1,11 +1,11 @@
1
- README for LuaJIT 2.1.0-beta2
1
+ README for LuaJIT 2.1.0-beta3
2
2
  -----------------------------
3
3
 
4
4
  LuaJIT is a Just-In-Time (JIT) compiler for the Lua programming language.
5
5
 
6
6
  Project Homepage: http://luajit.org/
7
7
 
8
- LuaJIT is Copyright (C) 2005-2016 Mike Pall.
8
+ LuaJIT is Copyright (C) 2005-2017 Mike Pall.
9
9
  LuaJIT is free software, released under the MIT license.
10
10
  See full Copyright Notice in the COPYRIGHT file or in luajit.h.
11
11
 
@@ -1,4 +1,4 @@
1
- /* Copyright (C) 2004-2016 Mike Pall.
1
+ /* Copyright (C) 2004-2017 Mike Pall.
2
2
  *
3
3
  * You are welcome to use the general ideas of this design for your own sites.
4
4
  * But please do not steal the stylesheet, the layout or the color scheme.
@@ -1,4 +1,4 @@
1
- /* Copyright (C) 2004-2016 Mike Pall.
1
+ /* Copyright (C) 2004-2017 Mike Pall.
2
2
  *
3
3
  * You are welcome to use the general ideas of this design for your own sites.
4
4
  * But please do not steal the stylesheet, the layout or the color scheme.
@@ -4,7 +4,7 @@
4
4
  <title>LuaJIT Change History</title>
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
6
6
  <meta name="Author" content="Mike Pall">
7
- <meta name="Copyright" content="Copyright (C) 2005-2016, Mike Pall">
7
+ <meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
8
8
  <meta name="Language" content="en">
9
9
  <link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
10
10
  <link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
@@ -65,7 +65,7 @@ div.major { max-width: 600px; padding: 1em; margin: 1em 0 1em 0; }
65
65
  <div id="main">
66
66
  <p>
67
67
  This is a list of changes between the released versions of LuaJIT.<br>
68
- The current <span style="color: #0000c0;">stable version</span> is <strong>LuaJIT&nbsp;2.0.4</strong>.<br>
68
+ The current <span style="color: #0000c0;">stable version</span> is <strong>LuaJIT&nbsp;2.0.5</strong>.<br>
69
69
  </p>
70
70
  <p>
71
71
  Please check the
@@ -74,6 +74,30 @@ to see whether newer versions are available.
74
74
  </p>
75
75
 
76
76
  <div class="major" style="background: #d0d0ff;">
77
+ <h2 id="LuaJIT-2.1.0-beta3">LuaJIT 2.1.0-beta3 &mdash; 2017-05-01</h2>
78
+ <ul>
79
+ <li>Rewrite memory block allocator.</li>
80
+ <li>Add various extension from Lua 5.2/5.3.</li>
81
+ <li>Remove old Lua 5.0 compatibility defines.</li>
82
+ <li>Set arg table before evaluating <tt>LUA_INIT</tt> and <tt>-e</tt> chunks.</li>
83
+ <li>Fix FOLD rules for <tt>math.abs()</tt> and FP negation.</li>
84
+ <li>Fix soft-float <tt>math.abs()</tt> and negation.</li>
85
+ <li>Fix formatting of some small denormals at low precision.</li>
86
+ <li>LJ_GC64: Add JIT compiler support.</li>
87
+ <li>x64/LJ_GC64: Add JIT compiler backend.</li>
88
+ <li>x86/x64: Generate BMI2 shifts and rotates, if available.</li>
89
+ <li>Windows/x86: Add full exception interoperability.</li>
90
+ <li>ARM64: Add big-endian support.</li>
91
+ <li>ARM64: Add JIT compiler backend.</li>
92
+ <li>MIPS: Fix <tt>TSETR</tt> barrier.</li>
93
+ <li>MIPS: Support MIPS16 interlinking.</li>
94
+ <li>MIPS soft-float: Fix code generation for <tt>HREF</tt>.</li>
95
+ <li>MIPS64: Add MIPS64 hard-float JIT compiler backend.</li>
96
+ <li>MIPS64: Add MIPS64 hard-float/soft-float support to interpreter.</li>
97
+ <li>FFI: Compile bitfield loads/stores.</li>
98
+ <li>Various fixes common with the 2.0 branch.</li>
99
+ </ul>
100
+
77
101
  <h2 id="LuaJIT-2.1.0-beta2">LuaJIT 2.1.0-beta2 &mdash; 2016-03-03</h2>
78
102
  <ul>
79
103
  <li>Enable trace stitching.</li>
@@ -140,6 +164,48 @@ Please take a look at the commit history for more details.
140
164
  </div>
141
165
 
142
166
  <div class="major" style="background: #ffffd0;">
167
+ <h2 id="LuaJIT-2.0.5">LuaJIT 2.0.5 &mdash; 2017-05-01</h2>
168
+ <ul>
169
+ <li>Add workaround for MSVC 2015 stdio changes.</li>
170
+ <li>Limit mcode alloc probing, depending on the available pool size.</li>
171
+ <li>Fix overly restrictive range calculation in mcode allocation.</li>
172
+ <li>Fix out-of-scope goto handling in parser.</li>
173
+ <li>Remove internal <tt>__mode = "K"</tt> and replace with safe check.</li>
174
+ <li>Add "proto" field to <tt>jit.util.funcinfo()</tt>.</li>
175
+ <li>Fix GC step size calculation.</li>
176
+ <li>Initialize <tt>uv-&gt;immutable</tt> for upvalues of loaded chunks.</li>
177
+ <li>Fix for cdata vs. non-cdata arithmetics/comparisons.</li>
178
+ <li>Drop leftover regs in 'for' iterator assignment, too.</li>
179
+ <li>Fix PHI remarking in SINK pass.</li>
180
+ <li>Don't try to record outermost <tt>pcall()</tt> return to lower frame.</li>
181
+ <li>Add guard for obscure aliasing between open upvalues and SSA slots.</li>
182
+ <li>Remove assumption that <tt>lj_math_random_step()</tt> doesn't clobber FPRs.</li>
183
+ <li>Fix handling of non-numeric strings in arithmetic coercions.</li>
184
+ <li>Fix recording of <tt>select(n, ...)</tt> with off-trace varargs</li>
185
+ <li>Fix install for cross-builds.</li>
186
+ <li>Don't allocate unused 2nd result register in JIT compiler backend.</li>
187
+ <li>Drop marks from replayed instructions when sinking.</li>
188
+ <li>Fix unsinking check.</li>
189
+ <li>Properly handle OOM in <tt>trace_save()</tt>.</li>
190
+ <li>Limit number of arguments given to <tt>io.lines()</tt> and <tt>fp:lines()</tt>.</li>
191
+ <li>Fix narrowing of <tt>TOBIT</tt>.</li>
192
+ <li>OSX: Fix build with recent XCode.</li>
193
+ <li>x86/x64: Don't spill an explicit <tt>REF_BASE</tt> in the IR.</li>
194
+ <li>x86/x64: Fix instruction length decoder.</li>
195
+ <li>x86/x64: Search for exit jumps with instruction length decoder.</li>
196
+ <li>ARM: Fix <tt>BLX</tt> encoding for Thumb interworking calls.</li>
197
+ <li>MIPS: Don't use <tt>RID_GP</tt> as a scratch register.</li>
198
+ <li>MIPS: Fix emitted code for U32 to float conversion.</li>
199
+ <li>MIPS: Backport workaround for compact unwind tables.</li>
200
+ <li>MIPS: Fix cross-endian jit.bcsave.</li>
201
+ <li>MIPS: Fix <tt>BC_ISNEXT</tt> fallback path.</li>
202
+ <li>MIPS: Fix use of ffgccheck delay slots in interpreter.</li>
203
+ <li>FFI: Fix FOLD rules for <tt>int64_t</tt> comparisons.</li>
204
+ <li>FFI: Fix SPLIT pass for <tt>CONV i64.u64</tt>.</li>
205
+ <li>FFI: Fix <tt>ipairs()</tt> recording.</li>
206
+ <li>FFI: Don't propagate qualifiers into subtypes of complex.</li>
207
+ </ul>
208
+
143
209
  <h2 id="LuaJIT-2.0.4">LuaJIT 2.0.4 &mdash; 2015-05-14</h2>
144
210
  <ul>
145
211
  <li>Fix stack check in narrowing optimization.</li>
@@ -807,7 +873,7 @@ no point in listing differences over earlier versions.</li>
807
873
  </div>
808
874
  <div id="foot">
809
875
  <hr class="hide">
810
- Copyright &copy; 2005-2016 Mike Pall
876
+ Copyright &copy; 2005-2017 Mike Pall
811
877
  <span class="noprint">
812
878
  &middot;
813
879
  <a href="contact.html">Contact</a>
@@ -4,7 +4,7 @@
4
4
  <title>Contact</title>
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
6
6
  <meta name="Author" content="Mike Pall">
7
- <meta name="Copyright" content="Copyright (C) 2005-2016, Mike Pall">
7
+ <meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
8
8
  <meta name="Language" content="en">
9
9
  <link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
10
10
  <link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
@@ -61,8 +61,15 @@
61
61
  </div>
62
62
  <div id="main">
63
63
  <p>
64
+ If you want to report bugs, propose fixes or suggest enhancements,
65
+ please use the
66
+ <a href="https://github.com/LuaJIT/LuaJIT/issues">GitHub issue tracker</a>.
67
+ </p>
68
+ <p>
64
69
  Please send general questions to the
65
70
  <a href="http://luajit.org/list.html"><span class="ext">&raquo;</span>&nbsp;LuaJIT mailing list</a>.
71
+ </p>
72
+ <p>
66
73
  You can also send any questions you have directly to me:
67
74
  </p>
68
75
 
@@ -86,7 +93,7 @@ xD("fyZKB8xv\"FJytmz8.KAB0u52D")
86
93
  <h2>Copyright</h2>
87
94
  <p>
88
95
  All documentation is
89
- Copyright &copy; 2005-2016 Mike Pall.
96
+ Copyright &copy; 2005-2017 Mike Pall.
90
97
  </p>
91
98
 
92
99
 
@@ -94,7 +101,7 @@ Copyright &copy; 2005-2016 Mike Pall.
94
101
  </div>
95
102
  <div id="foot">
96
103
  <hr class="hide">
97
- Copyright &copy; 2005-2016 Mike Pall
104
+ Copyright &copy; 2005-2017 Mike Pall
98
105
  <span class="noprint">
99
106
  &middot;
100
107
  <a href="contact.html">Contact</a>