contrast-agent 3.12.1 → 3.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (287) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +0 -1
  3. data/.gitignore +1 -1
  4. data/.simplecov +1 -1
  5. data/Rakefile +31 -0
  6. data/exe/contrast_service +1 -7
  7. data/ext/build_funchook.rb +0 -2
  8. data/ext/cs__assess_active_record_named/cs__active_record_named.c +8 -7
  9. data/ext/cs__assess_array/cs__assess_array.c +6 -5
  10. data/ext/cs__assess_basic_object/cs__assess_basic_object.c +5 -5
  11. data/ext/cs__assess_fiber_track/cs__assess_fiber_track.c +4 -9
  12. data/ext/cs__assess_fiber_track/cs__assess_fiber_track.h +0 -1
  13. data/ext/cs__assess_hash/cs__assess_hash.c +18 -17
  14. data/ext/cs__assess_hash/cs__assess_hash.h +2 -1
  15. data/ext/cs__assess_kernel/cs__assess_kernel.c +7 -8
  16. data/ext/cs__assess_marshal_module/cs__assess_marshal_module.c +4 -5
  17. data/ext/cs__assess_module/cs__assess_module.c +6 -6
  18. data/ext/cs__assess_regexp/cs__assess_regexp.c +4 -4
  19. data/ext/cs__assess_string/cs__assess_string.c +20 -4
  20. data/ext/cs__assess_string/cs__assess_string.h +4 -1
  21. data/ext/cs__assess_string_interpolation26/cs__assess_string_interpolation26.c +4 -7
  22. data/ext/cs__assess_yield_track/cs__assess_yield_track.c +3 -7
  23. data/ext/cs__assess_yield_track/cs__assess_yield_track.h +0 -1
  24. data/ext/cs__common/cs__common.c +59 -28
  25. data/ext/cs__common/cs__common.h +18 -20
  26. data/ext/cs__common/extconf.rb +0 -14
  27. data/ext/cs__contrast_patch/cs__contrast_patch.c +27 -25
  28. data/ext/cs__contrast_patch/cs__contrast_patch.h +5 -7
  29. data/ext/cs__protect_kernel/cs__protect_kernel.c +11 -12
  30. data/ext/cs__protect_kernel/cs__protect_kernel.h +2 -2
  31. data/ext/extconf_common.rb +0 -28
  32. data/lib/contrast-agent.rb +1 -1
  33. data/lib/contrast.rb +15 -23
  34. data/lib/contrast/agent.rb +51 -39
  35. data/lib/contrast/agent/assess.rb +11 -12
  36. data/lib/contrast/agent/assess/contrast_event.rb +39 -176
  37. data/lib/contrast/agent/assess/events/event_factory.rb +2 -2
  38. data/lib/contrast/agent/assess/events/source_event.rb +5 -9
  39. data/lib/contrast/agent/assess/finalizers/finalize.rb +21 -0
  40. data/lib/contrast/agent/assess/finalizers/freeze.rb +13 -0
  41. data/lib/contrast/agent/assess/finalizers/hash.rb +53 -0
  42. data/lib/contrast/agent/assess/policy/dynamic_source_factory.rb +2 -2
  43. data/lib/contrast/agent/assess/policy/patcher.rb +5 -5
  44. data/lib/contrast/agent/assess/policy/policy.rb +9 -9
  45. data/lib/contrast/agent/assess/policy/policy_node.rb +5 -99
  46. data/lib/contrast/agent/assess/policy/policy_scanner.rb +3 -3
  47. data/lib/contrast/agent/assess/policy/preshift.rb +15 -5
  48. data/lib/contrast/agent/assess/policy/propagation_method.rb +26 -24
  49. data/lib/contrast/agent/assess/policy/propagation_node.rb +6 -2
  50. data/lib/contrast/agent/assess/policy/propagator.rb +18 -18
  51. data/lib/contrast/agent/assess/policy/propagator/base.rb +1 -1
  52. data/lib/contrast/agent/assess/policy/propagator/custom.rb +1 -1
  53. data/lib/contrast/agent/assess/policy/propagator/database_write.rb +1 -1
  54. data/lib/contrast/agent/assess/policy/propagator/insert.rb +1 -4
  55. data/lib/contrast/agent/assess/policy/propagator/match_data.rb +12 -3
  56. data/lib/contrast/agent/assess/policy/propagator/prepend.rb +5 -0
  57. data/lib/contrast/agent/assess/policy/propagator/remove.rb +6 -11
  58. data/lib/contrast/agent/assess/policy/propagator/select.rb +4 -4
  59. data/lib/contrast/agent/assess/policy/propagator/split.rb +5 -5
  60. data/lib/contrast/agent/assess/policy/propagator/substitution.rb +8 -7
  61. data/lib/contrast/agent/assess/policy/propagator/trim.rb +6 -10
  62. data/lib/contrast/agent/assess/policy/rewriter_patch.rb +5 -5
  63. data/lib/contrast/agent/assess/policy/source_method.rb +6 -16
  64. data/lib/contrast/agent/assess/policy/source_validation/cross_site_validator.rb +1 -1
  65. data/lib/contrast/agent/assess/policy/source_validation/source_validation.rb +1 -1
  66. data/lib/contrast/agent/assess/policy/trigger/xpath.rb +1 -1
  67. data/lib/contrast/agent/assess/policy/trigger_method.rb +7 -15
  68. data/lib/contrast/agent/assess/policy/trigger_node.rb +18 -6
  69. data/lib/contrast/agent/assess/policy/trigger_validation/trigger_validation.rb +2 -2
  70. data/lib/contrast/agent/assess/properties.rb +13 -383
  71. data/lib/contrast/agent/assess/property/evented.rb +78 -0
  72. data/lib/contrast/agent/assess/property/tagged.rb +339 -0
  73. data/lib/contrast/agent/assess/rule.rb +2 -2
  74. data/lib/contrast/agent/assess/rule/base.rb +3 -4
  75. data/lib/contrast/agent/assess/rule/provider.rb +3 -3
  76. data/lib/contrast/agent/assess/rule/provider/hardcoded_password.rb +1 -1
  77. data/lib/contrast/agent/assess/rule/provider/hardcoded_value_rule.rb +4 -22
  78. data/lib/contrast/agent/assess/tag.rb +27 -12
  79. data/lib/contrast/agent/at_exit_hook.rb +4 -2
  80. data/lib/contrast/agent/class_reopener.rb +7 -6
  81. data/lib/contrast/agent/deadzone/policy/deadzone_node.rb +1 -1
  82. data/lib/contrast/agent/deadzone/policy/policy.rb +2 -2
  83. data/lib/contrast/agent/disable_reaction.rb +1 -1
  84. data/lib/contrast/agent/exclusion_matcher.rb +3 -3
  85. data/lib/contrast/agent/inventory/policy/datastores.rb +2 -3
  86. data/lib/contrast/agent/inventory/policy/policy.rb +3 -3
  87. data/lib/contrast/agent/inventory/policy/trigger_node.rb +1 -1
  88. data/lib/contrast/agent/middleware.rb +37 -48
  89. data/lib/contrast/agent/patching/policy/after_load_patch.rb +4 -4
  90. data/lib/contrast/agent/patching/policy/after_load_patcher.rb +6 -5
  91. data/lib/contrast/agent/patching/policy/module_policy.rb +1 -1
  92. data/lib/contrast/agent/patching/policy/patch.rb +16 -16
  93. data/lib/contrast/agent/patching/policy/patcher.rb +30 -22
  94. data/lib/contrast/agent/patching/policy/policy.rb +9 -9
  95. data/lib/contrast/agent/patching/policy/policy_node.rb +3 -3
  96. data/lib/contrast/agent/patching/policy/trigger_node.rb +2 -2
  97. data/lib/contrast/agent/protect/policy/applies_command_injection_rule.rb +3 -3
  98. data/lib/contrast/agent/protect/policy/applies_deserialization_rule.rb +2 -2
  99. data/lib/contrast/agent/protect/policy/applies_no_sqli_rule.rb +2 -2
  100. data/lib/contrast/agent/protect/policy/applies_path_traversal_rule.rb +3 -3
  101. data/lib/contrast/agent/protect/policy/applies_sqli_rule.rb +2 -2
  102. data/lib/contrast/agent/protect/policy/applies_xxe_rule.rb +3 -3
  103. data/lib/contrast/agent/protect/policy/policy.rb +8 -8
  104. data/lib/contrast/agent/protect/policy/rule_applicator.rb +3 -3
  105. data/lib/contrast/agent/protect/policy/trigger_node.rb +1 -1
  106. data/lib/contrast/agent/protect/rule.rb +18 -18
  107. data/lib/contrast/agent/protect/rule/base.rb +21 -32
  108. data/lib/contrast/agent/protect/rule/base_service.rb +2 -2
  109. data/lib/contrast/agent/protect/rule/cmd_injection.rb +5 -5
  110. data/lib/contrast/agent/protect/rule/deserialization.rb +1 -1
  111. data/lib/contrast/agent/protect/rule/http_method_tampering.rb +3 -8
  112. data/lib/contrast/agent/protect/rule/no_sqli.rb +1 -1
  113. data/lib/contrast/agent/protect/rule/path_traversal.rb +4 -5
  114. data/lib/contrast/agent/protect/rule/sqli.rb +2 -2
  115. data/lib/contrast/agent/protect/rule/unsafe_file_upload.rb +1 -1
  116. data/lib/contrast/agent/protect/rule/xss.rb +1 -1
  117. data/lib/contrast/agent/protect/rule/xxe.rb +4 -5
  118. data/lib/contrast/agent/protect/rule/xxe/entity_wrapper.rb +2 -2
  119. data/lib/contrast/agent/railtie.rb +1 -1
  120. data/lib/contrast/agent/reaction_processor.rb +5 -5
  121. data/lib/contrast/agent/request.rb +103 -340
  122. data/lib/contrast/agent/request_context.rb +25 -21
  123. data/lib/contrast/agent/request_handler.rb +1 -1
  124. data/lib/contrast/agent/response.rb +8 -20
  125. data/lib/contrast/agent/rewriter.rb +5 -6
  126. data/lib/contrast/agent/scope.rb +1 -1
  127. data/lib/contrast/agent/service_heartbeat.rb +8 -10
  128. data/lib/contrast/agent/static_analysis.rb +4 -4
  129. data/lib/contrast/agent/thread.rb +1 -1
  130. data/lib/contrast/agent/thread_watcher.rb +49 -0
  131. data/lib/contrast/agent/tracepoint_hook.rb +1 -1
  132. data/lib/contrast/agent/version.rb +1 -1
  133. data/lib/contrast/agent/worker_thread.rb +24 -0
  134. data/lib/contrast/api.rb +4 -6
  135. data/lib/contrast/api/communication.rb +20 -0
  136. data/lib/contrast/api/communication/connection_status.rb +41 -0
  137. data/lib/contrast/api/communication/messaging_queue.rb +79 -0
  138. data/lib/contrast/{utils/service_response_util.rb → api/communication/response_processor.rb} +10 -19
  139. data/lib/contrast/api/communication/service_lifecycle.rb +61 -0
  140. data/lib/contrast/api/communication/socket.rb +45 -0
  141. data/lib/contrast/api/communication/socket_client.rb +76 -0
  142. data/lib/contrast/api/communication/speedracer.rb +111 -0
  143. data/lib/contrast/api/communication/tcp_socket.rb +31 -0
  144. data/lib/contrast/api/communication/unix_socket.rb +27 -0
  145. data/lib/contrast/api/decorators.rb +14 -4
  146. data/lib/contrast/api/decorators/address.rb +61 -0
  147. data/lib/contrast/api/decorators/application_settings.rb +10 -5
  148. data/lib/contrast/api/decorators/application_update.rb +5 -13
  149. data/lib/contrast/api/decorators/http_request.rb +140 -0
  150. data/lib/contrast/api/decorators/input_analysis.rb +3 -2
  151. data/lib/contrast/api/decorators/message.rb +76 -0
  152. data/lib/contrast/api/decorators/rasp_rule_sample.rb +29 -0
  153. data/lib/contrast/api/decorators/route_coverage.rb +58 -0
  154. data/lib/contrast/api/decorators/server_features.rb +3 -2
  155. data/lib/contrast/api/decorators/trace_event.rb +100 -0
  156. data/lib/contrast/api/decorators/trace_event_object.rb +58 -0
  157. data/lib/contrast/api/decorators/trace_event_signature.rb +47 -0
  158. data/lib/contrast/api/decorators/trace_taint_range.rb +52 -0
  159. data/lib/contrast/api/decorators/trace_taint_range_tags.rb +109 -0
  160. data/lib/contrast/api/decorators/user_input.rb +40 -0
  161. data/lib/contrast/common_agent_configuration.rb +2 -2
  162. data/lib/contrast/components/agent.rb +2 -2
  163. data/lib/contrast/components/app_context.rb +1 -8
  164. data/lib/contrast/components/config.rb +7 -12
  165. data/lib/contrast/components/contrast_service.rb +1 -1
  166. data/lib/contrast/components/interface.rb +16 -16
  167. data/lib/contrast/components/logger.rb +1 -1
  168. data/lib/contrast/components/scope.rb +3 -3
  169. data/lib/contrast/components/settings.rb +0 -6
  170. data/lib/contrast/config.rb +18 -18
  171. data/lib/contrast/config/base_configuration.rb +2 -2
  172. data/lib/contrast/config/protect_rule_configuration.rb +1 -1
  173. data/lib/contrast/configuration.rb +5 -5
  174. data/lib/contrast/extension/assess.rb +22 -22
  175. data/lib/contrast/extension/assess/array.rb +4 -4
  176. data/lib/contrast/extension/assess/assess_extension.rb +28 -31
  177. data/lib/contrast/extension/assess/eval_trigger.rb +3 -3
  178. data/lib/contrast/extension/assess/exec_trigger.rb +1 -1
  179. data/lib/contrast/extension/assess/fiber.rb +3 -3
  180. data/lib/contrast/extension/assess/hash.rb +5 -3
  181. data/lib/contrast/extension/assess/kernel.rb +7 -6
  182. data/lib/contrast/extension/assess/marshal.rb +62 -0
  183. data/lib/contrast/extension/assess/regexp.rb +3 -3
  184. data/lib/contrast/extension/assess/string.rb +6 -6
  185. data/lib/contrast/extension/inventory.rb +4 -5
  186. data/lib/contrast/extension/kernel.rb +1 -1
  187. data/lib/contrast/extension/module.rb +1 -1
  188. data/lib/contrast/extension/protect.rb +3 -3
  189. data/lib/contrast/extension/protect/kernel.rb +2 -2
  190. data/lib/contrast/extension/protect/psych.rb +2 -2
  191. data/lib/contrast/framework/base_support.rb +0 -23
  192. data/lib/contrast/framework/manager.rb +7 -17
  193. data/lib/contrast/framework/rack/patch/session_cookie.rb +1 -1
  194. data/lib/contrast/framework/rack/patch/support.rb +1 -1
  195. data/lib/contrast/framework/rack/support.rb +2 -2
  196. data/lib/contrast/framework/rails/patch/action_controller_live_buffer.rb +1 -3
  197. data/lib/contrast/framework/rails/patch/assess_configuration.rb +5 -6
  198. data/lib/contrast/framework/rails/patch/rails_application_configuration.rb +1 -1
  199. data/lib/contrast/framework/rails/patch/support.rb +3 -3
  200. data/lib/contrast/framework/rails/rewrite/action_controller_railties_helper_inherited.rb +2 -2
  201. data/lib/contrast/framework/rails/rewrite/active_record_named.rb +2 -2
  202. data/lib/contrast/framework/rails/rewrite/active_record_time_zone_inherited.rb +2 -2
  203. data/lib/contrast/framework/rails/support.rb +56 -37
  204. data/lib/contrast/framework/sinatra/patch/base.rb +2 -2
  205. data/lib/contrast/framework/sinatra/patch/support.rb +1 -1
  206. data/lib/contrast/framework/sinatra/support.rb +13 -24
  207. data/lib/contrast/funchook/funchook.rb +45 -0
  208. data/lib/contrast/logger/application.rb +3 -3
  209. data/lib/contrast/logger/format.rb +64 -0
  210. data/lib/contrast/logger/log.rb +17 -9
  211. data/lib/contrast/logger/request.rb +30 -0
  212. data/lib/contrast/tasks/config.rb +1 -1
  213. data/lib/contrast/tasks/service.rb +2 -2
  214. data/lib/contrast/utils/assess/sampling_util.rb +2 -2
  215. data/lib/contrast/utils/assess/tracking_util.rb +46 -21
  216. data/lib/contrast/utils/boolean_util.rb +1 -1
  217. data/lib/contrast/utils/class_util.rb +5 -3
  218. data/lib/contrast/utils/freeze_util.rb +1 -1
  219. data/lib/contrast/utils/gemfile_reader.rb +5 -5
  220. data/lib/contrast/utils/hash_digest.rb +13 -3
  221. data/lib/contrast/utils/heap_dump_util.rb +2 -2
  222. data/lib/contrast/utils/invalid_configuration_util.rb +2 -18
  223. data/lib/contrast/utils/inventory_util.rb +6 -11
  224. data/lib/contrast/utils/io_util.rb +1 -1
  225. data/lib/contrast/utils/object_share.rb +0 -1
  226. data/lib/contrast/utils/os.rb +16 -4
  227. data/lib/contrast/utils/ruby_ast_rewriter.rb +1 -1
  228. data/lib/contrast/utils/sha256_builder.rb +2 -2
  229. data/lib/contrast/utils/stack_trace_utils.rb +2 -3
  230. data/lib/contrast/utils/string_utils.rb +1 -1
  231. data/lib/contrast/utils/tag_util.rb +1 -1
  232. data/lib/contrast/utils/thread_tracker.rb +1 -14
  233. data/lib/contrast/utils/timer.rb +1 -17
  234. data/resources/deadzone/policy.json +5 -0
  235. data/ruby-agent.gemspec +9 -9
  236. data/service_executables/VERSION +1 -1
  237. data/service_executables/linux/contrast-service +0 -0
  238. data/service_executables/mac/contrast-service +0 -0
  239. metadata +60 -79
  240. data/funchook/Makefile +0 -29
  241. data/funchook/autom4te.cache/output.0 +0 -4976
  242. data/funchook/autom4te.cache/requests +0 -78
  243. data/funchook/autom4te.cache/traces.0 +0 -364
  244. data/funchook/config.log +0 -490
  245. data/funchook/config.status +0 -1016
  246. data/funchook/configure +0 -4976
  247. data/funchook/src/Makefile +0 -70
  248. data/funchook/src/config.h +0 -101
  249. data/funchook/src/config.h.in +0 -100
  250. data/funchook/src/decoder.o +0 -0
  251. data/funchook/src/distorm.o +0 -0
  252. data/funchook/src/funchook.o +0 -0
  253. data/funchook/src/funchook_io.o +0 -0
  254. data/funchook/src/funchook_syscall.o +0 -0
  255. data/funchook/src/funchook_unix.o +0 -0
  256. data/funchook/src/funchook_x86.o +0 -0
  257. data/funchook/src/instructions.o +0 -0
  258. data/funchook/src/insts.o +0 -0
  259. data/funchook/src/libfunchook.so +0 -0
  260. data/funchook/src/mnemonics.o +0 -0
  261. data/funchook/src/operands.o +0 -0
  262. data/funchook/src/os_func.o +0 -0
  263. data/funchook/src/os_func_unix.o +0 -0
  264. data/funchook/src/prefix.o +0 -0
  265. data/funchook/src/printf_base.o +0 -0
  266. data/funchook/src/textdefs.o +0 -0
  267. data/funchook/src/wstring.o +0 -0
  268. data/funchook/test/Makefile +0 -43
  269. data/funchook/test/funchook_test +0 -0
  270. data/funchook/test/libfunchook_test.so +0 -0
  271. data/funchook/test/test_main.o +0 -0
  272. data/funchook/test/x86_64_test.o +0 -0
  273. data/lib/contrast/agent/assess/adjusted_span.rb +0 -27
  274. data/lib/contrast/agent/assess/insulator.rb +0 -49
  275. data/lib/contrast/agent/require_state.rb +0 -61
  276. data/lib/contrast/agent/socket_client.rb +0 -134
  277. data/lib/contrast/api/connection_status.rb +0 -49
  278. data/lib/contrast/api/socket.rb +0 -43
  279. data/lib/contrast/api/speedracer.rb +0 -188
  280. data/lib/contrast/api/tcp_socket.rb +0 -29
  281. data/lib/contrast/api/unix_socket.rb +0 -25
  282. data/lib/contrast/framework/sinatra/application_helper.rb +0 -51
  283. data/lib/contrast/framework/view_technologies_descriptor.rb +0 -21
  284. data/lib/contrast/internal_exception.rb +0 -8
  285. data/lib/contrast/utils/cache.rb +0 -58
  286. data/lib/contrast/utils/service_sender_util.rb +0 -167
  287. data/lib/contrast/utils/sinatra_helper.rb +0 -49
@@ -1,70 +0,0 @@
1
- srcdir = .
2
- top_srcdir = ..
3
- top_builddir = ..
4
-
5
- DISTORM3_DIR = $(top_srcdir)/distorm
6
- VPATH = $(DISTORM3_DIR)/src:$(top_srcdir)/include
7
-
8
- CC = gcc
9
- CFLAGS = -g -O2 -Wall -fvisibility=hidden -fPIC -g -I. -I$(top_srcdir)/include -I$(DISTORM3_DIR)/include
10
- LIBS = -ldl
11
- LINK_SHARED = $(CC) -shared
12
-
13
- #LIBS += -lpsapi
14
- #LDFLAGS += -install_name @rpath/libfunchook.dylib
15
-
16
- FUNCHOOK_OBJS = \
17
- os_func.o \
18
- os_func_unix.o \
19
- printf_base.o \
20
- funchook.o \
21
- funchook_io.o \
22
- funchook_x86.o \
23
- funchook_unix.o
24
-
25
- FUNCHOOK_OBJS += funchook_syscall.o
26
- #FUNCHOOK_OBJS += funchook_syscall.o
27
-
28
- DISTORM3_OBJS = \
29
- mnemonics.o \
30
- wstring.o \
31
- textdefs.o \
32
- prefix.o \
33
- operands.o \
34
- insts.o \
35
- instructions.o \
36
- distorm.o \
37
- decoder.o
38
-
39
- HEADERS = \
40
- funchook.h \
41
- funchook_internal.h \
42
- os_func.h
43
-
44
- OBJS = $(FUNCHOOK_OBJS) $(DISTORM3_OBJS)
45
-
46
- all: libfunchook.so
47
-
48
- check:
49
- cd ../test && $(MAKE) check
50
-
51
- libfunchook.so: $(OBJS)
52
- $(LINK_SHARED) $(LDFLAGS) -o libfunchook.so $(OBJS) $(LIBS)
53
-
54
- funchook.o: funchook.c $(HEADERS)
55
- funchook_linux.o: funchook_linux.c $(HEADERS)
56
- funchook_windows.o: funchook_windows.c $(HEADERS)
57
- funchook_x86.o: funchook_x86.c $(HEADERS)
58
- os_func.o: os_func.c os_func.h printf_base.h
59
- printf_base.o: printf_base.c printf_base.h
60
- $(CC) $(CFLAGS) -c -o $@ $< -DPFB_NO_EXTERNAL_FUNC -DPFB_MSVC_FORMAT
61
-
62
- # suppress warning: missing braces around initializer [-Wmissing-braces]
63
- insts.o: insts.c
64
- $(CC) $(CFLAGS) -c -o $@ $< -Wno-missing-braces
65
-
66
- clean:
67
- $(RM) libfunchook.so $(OBJS)
68
-
69
- Makefile config.h: $(srcdir)/Makefile.in $(srcdir)/config.h.in $(top_builddir)/config.status
70
- cd $(top_builddir) && ./config.status
@@ -1,101 +0,0 @@
1
- /* src/config.h. Generated from config.h.in by configure. */
2
- /* src/config.h.in. Generated from configure.ac by autoheader. */
3
-
4
- /* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you
5
- don't. */
6
- #define HAVE_DECL_SYS_ERRLIST 1
7
-
8
- /* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you
9
- don't. */
10
- #define HAVE_DECL_SYS_NERR 1
11
-
12
- /* Define to 1 if you have the declaration of `_sys_errlist', and to 0 if you
13
- don't. */
14
- #define HAVE_DECL__SYS_ERRLIST 1
15
-
16
- /* Define to 1 if you have the declaration of `_sys_nerr', and to 0 if you
17
- don't. */
18
- #define HAVE_DECL__SYS_NERR 1
19
-
20
- /* Define to 1 if you have the <inttypes.h> header file. */
21
- #define HAVE_INTTYPES_H 1
22
-
23
- /* Define to 1 if you have the <memory.h> header file. */
24
- #define HAVE_MEMORY_H 1
25
-
26
- /* Define to 1 if you have the <stdint.h> header file. */
27
- #define HAVE_STDINT_H 1
28
-
29
- /* Define to 1 if you have the <stdlib.h> header file. */
30
- #define HAVE_STDLIB_H 1
31
-
32
- /* Define to 1 if you have the <strings.h> header file. */
33
- #define HAVE_STRINGS_H 1
34
-
35
- /* Define to 1 if you have the <string.h> header file. */
36
- #define HAVE_STRING_H 1
37
-
38
- /* Define to 1 if you have the <sys/stat.h> header file. */
39
- #define HAVE_SYS_STAT_H 1
40
-
41
- /* Define to 1 if you have the <sys/types.h> header file. */
42
- #define HAVE_SYS_TYPES_H 1
43
-
44
- /* Define to 1 if you have the <unistd.h> header file. */
45
- #define HAVE_UNISTD_H 1
46
-
47
- /* Define to the address where bug reports for this package should be sent. */
48
- #define PACKAGE_BUGREPORT ""
49
-
50
- /* Define to the full name of this package. */
51
- #define PACKAGE_NAME "funchook"
52
-
53
- /* Define to the full name and version of this package. */
54
- #define PACKAGE_STRING "funchook 0.1"
55
-
56
- /* Define to the one symbol short name of this package. */
57
- #define PACKAGE_TARNAME "funchook"
58
-
59
- /* Define to the home page for this package. */
60
- #define PACKAGE_URL ""
61
-
62
- /* Define to the version of this package. */
63
- #define PACKAGE_VERSION "0.1"
64
-
65
- /* The size of `void*', as computed by sizeof. */
66
- #define SIZEOF_VOIDP 8
67
-
68
- /* Define to 1 if you have the ANSI C header files. */
69
- #define STDC_HEADERS 1
70
-
71
- /* Enable extensions on AIX 3, Interix. */
72
- #ifndef _ALL_SOURCE
73
- # define _ALL_SOURCE 1
74
- #endif
75
- /* Enable GNU extensions on systems that have them. */
76
- #ifndef _GNU_SOURCE
77
- # define _GNU_SOURCE 1
78
- #endif
79
- /* Enable threading extensions on Solaris. */
80
- #ifndef _POSIX_PTHREAD_SEMANTICS
81
- # define _POSIX_PTHREAD_SEMANTICS 1
82
- #endif
83
- /* Enable extensions on HP NonStop. */
84
- #ifndef _TANDEM_SOURCE
85
- # define _TANDEM_SOURCE 1
86
- #endif
87
- /* Enable general extensions on Solaris. */
88
- #ifndef __EXTENSIONS__
89
- # define __EXTENSIONS__ 1
90
- #endif
91
-
92
-
93
- /* Define to 1 if on MINIX. */
94
- /* #undef _MINIX */
95
-
96
- /* Define to 2 if the system does not provide POSIX.1 features except with
97
- this defined. */
98
- /* #undef _POSIX_1_SOURCE */
99
-
100
- /* Define to 1 if you need to in order for `stat' and other things to work. */
101
- /* #undef _POSIX_SOURCE */
@@ -1,100 +0,0 @@
1
- /* src/config.h.in. Generated from configure.ac by autoheader. */
2
-
3
- /* Define to 1 if you have the declaration of `sys_errlist', and to 0 if you
4
- don't. */
5
- #undef HAVE_DECL_SYS_ERRLIST
6
-
7
- /* Define to 1 if you have the declaration of `sys_nerr', and to 0 if you
8
- don't. */
9
- #undef HAVE_DECL_SYS_NERR
10
-
11
- /* Define to 1 if you have the declaration of `_sys_errlist', and to 0 if you
12
- don't. */
13
- #undef HAVE_DECL__SYS_ERRLIST
14
-
15
- /* Define to 1 if you have the declaration of `_sys_nerr', and to 0 if you
16
- don't. */
17
- #undef HAVE_DECL__SYS_NERR
18
-
19
- /* Define to 1 if you have the <inttypes.h> header file. */
20
- #undef HAVE_INTTYPES_H
21
-
22
- /* Define to 1 if you have the <memory.h> header file. */
23
- #undef HAVE_MEMORY_H
24
-
25
- /* Define to 1 if you have the <stdint.h> header file. */
26
- #undef HAVE_STDINT_H
27
-
28
- /* Define to 1 if you have the <stdlib.h> header file. */
29
- #undef HAVE_STDLIB_H
30
-
31
- /* Define to 1 if you have the <strings.h> header file. */
32
- #undef HAVE_STRINGS_H
33
-
34
- /* Define to 1 if you have the <string.h> header file. */
35
- #undef HAVE_STRING_H
36
-
37
- /* Define to 1 if you have the <sys/stat.h> header file. */
38
- #undef HAVE_SYS_STAT_H
39
-
40
- /* Define to 1 if you have the <sys/types.h> header file. */
41
- #undef HAVE_SYS_TYPES_H
42
-
43
- /* Define to 1 if you have the <unistd.h> header file. */
44
- #undef HAVE_UNISTD_H
45
-
46
- /* Define to the address where bug reports for this package should be sent. */
47
- #undef PACKAGE_BUGREPORT
48
-
49
- /* Define to the full name of this package. */
50
- #undef PACKAGE_NAME
51
-
52
- /* Define to the full name and version of this package. */
53
- #undef PACKAGE_STRING
54
-
55
- /* Define to the one symbol short name of this package. */
56
- #undef PACKAGE_TARNAME
57
-
58
- /* Define to the home page for this package. */
59
- #undef PACKAGE_URL
60
-
61
- /* Define to the version of this package. */
62
- #undef PACKAGE_VERSION
63
-
64
- /* The size of `void*', as computed by sizeof. */
65
- #undef SIZEOF_VOIDP
66
-
67
- /* Define to 1 if you have the ANSI C header files. */
68
- #undef STDC_HEADERS
69
-
70
- /* Enable extensions on AIX 3, Interix. */
71
- #ifndef _ALL_SOURCE
72
- # undef _ALL_SOURCE
73
- #endif
74
- /* Enable GNU extensions on systems that have them. */
75
- #ifndef _GNU_SOURCE
76
- # undef _GNU_SOURCE
77
- #endif
78
- /* Enable threading extensions on Solaris. */
79
- #ifndef _POSIX_PTHREAD_SEMANTICS
80
- # undef _POSIX_PTHREAD_SEMANTICS
81
- #endif
82
- /* Enable extensions on HP NonStop. */
83
- #ifndef _TANDEM_SOURCE
84
- # undef _TANDEM_SOURCE
85
- #endif
86
- /* Enable general extensions on Solaris. */
87
- #ifndef __EXTENSIONS__
88
- # undef __EXTENSIONS__
89
- #endif
90
-
91
-
92
- /* Define to 1 if on MINIX. */
93
- #undef _MINIX
94
-
95
- /* Define to 2 if the system does not provide POSIX.1 features except with
96
- this defined. */
97
- #undef _POSIX_1_SOURCE
98
-
99
- /* Define to 1 if you need to in order for `stat' and other things to work. */
100
- #undef _POSIX_SOURCE
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,43 +0,0 @@
1
- srcdir = .
2
- top_srcdir = ..
3
- top_builddir = ..
4
-
5
- CC = gcc
6
- AS = gcc -c
7
- OBJS = test_main.o x86_64_test.o
8
- CFLAGS += -O2 -g -I$(srcdir)/../include
9
- PIC_CFLAGS = -fPIC
10
- LIBS = -L$(top_builddir)/src -lfunchook -Wl,-rpath,$(top_builddir)/src -L. -lfunchook_test -Wl,-rpath,.
11
- LINK_SHARED = $(CC) -shared
12
- EXEEXT =
13
- DLLTOOL = $(firstword $(CC:gcc=dlltool))
14
- SO_OBJS = $(srcdir)/libfunchook_test.c $(srcdir)/libfunchook_test2.c
15
- #LDFLAGS += -Wl,--out-implib,funchook_test.lib
16
- #FUNCHOOK_TEST_LIB = funchook_test_exe.lib
17
- #LDFLAGS += -Wl,-undefined,dynamic_lookup
18
-
19
- VPATH = ../src
20
-
21
- all: funchook_test$(EXEEXT)
22
-
23
- test: funchook_test$(EXEEXT)
24
- # cmp -s $(top_builddir)/src/funchook.dll funchook.dll || cp $(top_builddir)/src/funchook.dll funchook.dll
25
- ./funchook_test$(EXEEXT)
26
-
27
- funchook_test$(EXEEXT): $(OBJS) libfunchook.so libfunchook_test.so
28
- $(CC) -o funchook_test$(EXEEXT) $(OBJS) $(LIBS)
29
-
30
- libfunchook_test.so: $(SO_OBJS) $(FUNCHOOK_TEST_LIB)
31
- $(LINK_SHARED) $(LDFLAGS) $(PIC_CFLAGS) $(CFLAGS) -o libfunchook_test.so $(SO_OBJS) $(FUNCHOOK_TEST_LIB)
32
-
33
- clean:
34
- $(RM) $(TESTEXE) *.o libfunchook_test.so
35
-
36
- Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
37
- cd $(top_builddir) && ./config.status
38
-
39
- funchook_test_exe.lib:
40
- echo "LIBRARY funchook_test.exe" > funchook_test_exe.def
41
- echo "EXPORTS" >> funchook_test_exe.def
42
- echo "get_val_in_exe" >> funchook_test_exe.def
43
- $(DLLTOOL) -d funchook_test_exe.def -l funchook_test_exe.lib
Binary file
Binary file
Binary file
@@ -1,27 +0,0 @@
1
- # Copyright (c) 2020 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
2
- # frozen_string_literal: true
3
-
4
- module Contrast
5
- module Agent
6
- module Assess
7
- # This is just a helper method for doing things in
8
- # Assess. It'll hold the start and end indexes of a
9
- # range on which we will take an action.
10
- #
11
- # It is essentially a range, but start and stop can
12
- # be set after initialization.
13
- #
14
- # Note: Unlike ranges, it is assumed that the stop
15
- # value is exclusive, not inclusive. [start, end)
16
- class AdjustedSpan
17
- attr_accessor :stop
18
- attr_reader :start
19
-
20
- def initialize start = nil, stop = nil
21
- @start = start if start
22
- @stop = stop if stop
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,49 +0,0 @@
1
- # Copyright (c) 2020 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
2
- # frozen_string_literal: true
3
-
4
- cs__scoped_require 'contrast/utils/prevent_serialization'
5
- cs__scoped_require 'contrast/agent/assess/properties'
6
-
7
- module Contrast
8
- module Agent
9
- module Assess
10
- # This is just a wrapper around Properties so that if they are on a frozen
11
- # object, they are left mutable for us.
12
- class Insulator
13
- # Return a new delegator with a properties method, used to track
14
- # properties in a manner that won't be serialized.
15
- #
16
- # @return [SimpleDelegator<Object>]
17
- def self.generate
18
- delegator = SimpleDelegator.new(nil)
19
- delegator.extend(Contrast::Utils::PreventPsychSerialization)
20
- delegator
21
- end
22
-
23
- # Return the frozen properties delegator, which is a
24
- #
25
- # @return [SimpleDelegator<Object>]
26
- def self.generate_frozen
27
- @_generate_frozen ||= begin
28
- delegator = SimpleDelegator.new(nil)
29
- delegator.extend(Contrast::Utils::PreventPsychSerialization)
30
- delegator
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
37
-
38
- # Our patch of the SimpleDelegator class, allowing us to leverage its
39
- # marshal_dump and marshal_load methods to hide our properties on an object so
40
- # that they will not be dumped or loaded.
41
- # We do this to prevent polluting data that may run on applications that are no
42
- # longer instrumented with Contrast
43
- class SimpleDelegator
44
- # rubocop:disable Naming/MemoizedInstanceVariableName
45
- def properties
46
- @delegate_properties ||= Contrast::Agent::Assess::Properties.new
47
- end
48
- # rubocop:enable Naming/MemoizedInstanceVariableName
49
- end
@@ -1,61 +0,0 @@
1
- # Copyright (c) 2020 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details.
2
- # frozen_string_literal: true
3
-
4
- module Contrast
5
- module Agent
6
- # Thread local way to access the current RequireState. Used as a convenient
7
- # wrapper to ensure specific key is used and that we handle the case when
8
- # we try to enter a previously unset require scope.
9
- # (Note that 'require scopes' track nested requires. This is distinct
10
- # from 'contrast scope', which tracks instrumentation.)
11
- module RequireStates
12
- class << self
13
- KEY = :thread_local_contrast_require_scope
14
-
15
- def enter
16
- scope = current_scope
17
- unless current_scope
18
- scope = RequireState.new
19
- Thread.current[KEY] = scope
20
- end
21
- scope.enter
22
- end
23
-
24
- def exit
25
- current_scope.exit
26
- end
27
-
28
- def current_scope
29
- Thread.current[KEY]
30
- end
31
-
32
- def status
33
- current_scope&.scope.to_s
34
- end
35
-
36
- def in_scope?
37
- scope = current_scope
38
- scope && scope.scope > 1
39
- end
40
- end
41
- end
42
-
43
- # Simple counter class for tracking how deep in nested requires / file
44
- # load operations we currently are.
45
- class RequireState
46
- attr_reader :scope
47
-
48
- def initialize
49
- @scope = 0
50
- end
51
-
52
- def enter
53
- @scope += 1
54
- end
55
-
56
- def exit
57
- @scope -= 1
58
- end
59
- end
60
- end
61
- end