immunio 1.2.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
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>