contrast-agent 3.12.0 → 3.13.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) 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/ext/build_funchook.rb +0 -2
  7. data/ext/cs__assess_fiber_track/cs__assess_fiber_track.c +2 -8
  8. data/ext/cs__assess_fiber_track/cs__assess_fiber_track.h +0 -1
  9. data/ext/cs__assess_string_interpolation26/cs__assess_string_interpolation26.c +1 -6
  10. data/ext/cs__assess_yield_track/cs__assess_yield_track.c +1 -5
  11. data/ext/cs__assess_yield_track/cs__assess_yield_track.h +0 -1
  12. data/ext/cs__common/cs__common.c +24 -0
  13. data/ext/cs__common/cs__common.h +3 -0
  14. data/ext/cs__common/extconf.rb +0 -14
  15. data/ext/extconf_common.rb +0 -28
  16. data/lib/contrast.rb +3 -1
  17. data/lib/contrast/agent.rb +14 -2
  18. data/lib/contrast/agent/assess/contrast_event.rb +28 -167
  19. data/lib/contrast/agent/assess/events/source_event.rb +3 -7
  20. data/lib/contrast/agent/assess/policy/dynamic_source_factory.rb +1 -1
  21. data/lib/contrast/agent/assess/policy/policy_node.rb +4 -98
  22. data/lib/contrast/agent/assess/policy/propagation_method.rb +1 -2
  23. data/lib/contrast/agent/assess/policy/propagation_node.rb +5 -1
  24. data/lib/contrast/agent/assess/policy/propagator/base.rb +1 -1
  25. data/lib/contrast/agent/assess/policy/propagator/insert.rb +1 -4
  26. data/lib/contrast/agent/assess/policy/propagator/match_data.rb +9 -1
  27. data/lib/contrast/agent/assess/policy/propagator/remove.rb +6 -11
  28. data/lib/contrast/agent/assess/policy/propagator/select.rb +4 -4
  29. data/lib/contrast/agent/assess/policy/propagator/split.rb +2 -2
  30. data/lib/contrast/agent/assess/policy/propagator/substitution.rb +4 -4
  31. data/lib/contrast/agent/assess/policy/propagator/trim.rb +6 -10
  32. data/lib/contrast/agent/assess/policy/source_method.rb +1 -2
  33. data/lib/contrast/agent/assess/policy/trigger_method.rb +2 -10
  34. data/lib/contrast/agent/assess/policy/trigger_node.rb +16 -4
  35. data/lib/contrast/agent/assess/properties.rb +4 -382
  36. data/lib/contrast/agent/assess/property/evented.rb +78 -0
  37. data/lib/contrast/agent/assess/property/tagged.rb +339 -0
  38. data/lib/contrast/agent/assess/rule/provider/hardcoded_value_rule.rb +2 -20
  39. data/lib/contrast/agent/assess/tag.rb +27 -12
  40. data/lib/contrast/agent/at_exit_hook.rb +3 -1
  41. data/lib/contrast/agent/exclusion_matcher.rb +2 -2
  42. data/lib/contrast/agent/inventory/policy/datastores.rb +0 -1
  43. data/lib/contrast/agent/middleware.rb +2 -14
  44. data/lib/contrast/agent/patching/policy/patch.rb +1 -1
  45. data/lib/contrast/agent/patching/policy/policy.rb +3 -3
  46. data/lib/contrast/agent/patching/policy/policy_node.rb +2 -2
  47. data/lib/contrast/agent/protect/policy/rule_applicator.rb +2 -2
  48. data/lib/contrast/agent/protect/rule/base.rb +19 -31
  49. data/lib/contrast/agent/protect/rule/base_service.rb +1 -1
  50. data/lib/contrast/agent/protect/rule/http_method_tampering.rb +2 -7
  51. data/lib/contrast/agent/protect/rule/xxe.rb +1 -0
  52. data/lib/contrast/agent/reaction_processor.rb +3 -3
  53. data/lib/contrast/agent/request.rb +92 -331
  54. data/lib/contrast/agent/request_context.rb +15 -15
  55. data/lib/contrast/agent/request_handler.rb +1 -1
  56. data/lib/contrast/agent/response.rb +2 -14
  57. data/lib/contrast/agent/scope.rb +1 -1
  58. data/lib/contrast/agent/service_heartbeat.rb +7 -9
  59. data/lib/contrast/agent/static_analysis.rb +1 -1
  60. data/lib/contrast/agent/thread_watcher.rb +49 -0
  61. data/lib/contrast/agent/version.rb +1 -1
  62. data/lib/contrast/agent/worker_thread.rb +24 -0
  63. data/lib/contrast/api.rb +3 -5
  64. data/lib/contrast/api/communication.rb +20 -0
  65. data/lib/contrast/api/communication/connection_status.rb +41 -0
  66. data/lib/contrast/api/communication/messaging_queue.rb +79 -0
  67. data/lib/contrast/{utils/service_response_util.rb → api/communication/response_processor.rb} +9 -18
  68. data/lib/contrast/api/communication/service_lifecycle.rb +61 -0
  69. data/lib/contrast/api/communication/socket.rb +45 -0
  70. data/lib/contrast/api/communication/socket_client.rb +76 -0
  71. data/lib/contrast/api/communication/speedracer.rb +111 -0
  72. data/lib/contrast/api/communication/tcp_socket.rb +31 -0
  73. data/lib/contrast/api/communication/unix_socket.rb +27 -0
  74. data/lib/contrast/api/decorators.rb +10 -0
  75. data/lib/contrast/api/decorators/address.rb +60 -0
  76. data/lib/contrast/api/decorators/application_settings.rb +7 -3
  77. data/lib/contrast/api/decorators/application_update.rb +0 -9
  78. data/lib/contrast/api/decorators/http_request.rb +139 -0
  79. data/lib/contrast/api/decorators/message.rb +75 -0
  80. data/lib/contrast/api/decorators/rasp_rule_sample.rb +28 -0
  81. data/lib/contrast/api/decorators/route_coverage.rb +57 -0
  82. data/lib/contrast/api/decorators/trace_event.rb +99 -0
  83. data/lib/contrast/api/decorators/trace_event_object.rb +57 -0
  84. data/lib/contrast/api/decorators/trace_event_signature.rb +46 -0
  85. data/lib/contrast/api/decorators/trace_taint_range.rb +51 -0
  86. data/lib/contrast/api/decorators/trace_taint_range_tags.rb +109 -0
  87. data/lib/contrast/api/decorators/user_input.rb +40 -0
  88. data/lib/contrast/components/app_context.rb +0 -7
  89. data/lib/contrast/components/config.rb +4 -9
  90. data/lib/contrast/components/interface.rb +1 -1
  91. data/lib/contrast/components/settings.rb +0 -6
  92. data/lib/contrast/configuration.rb +2 -2
  93. data/lib/contrast/extension/assess.rb +0 -1
  94. data/lib/contrast/extension/assess/assess_extension.rb +1 -2
  95. data/lib/contrast/extension/assess/fiber.rb +1 -1
  96. data/lib/contrast/extension/assess/string.rb +1 -1
  97. data/lib/contrast/extension/inventory.rb +0 -1
  98. data/lib/contrast/framework/base_support.rb +0 -23
  99. data/lib/contrast/framework/manager.rb +0 -9
  100. data/lib/contrast/framework/rails/patch/action_controller_live_buffer.rb +1 -3
  101. data/lib/contrast/framework/rails/patch/assess_configuration.rb +3 -4
  102. data/lib/contrast/framework/rails/support.rb +3 -32
  103. data/lib/contrast/framework/sinatra/patch/base.rb +1 -1
  104. data/lib/contrast/framework/sinatra/support.rb +11 -22
  105. data/lib/contrast/funchook/funchook.rb +45 -0
  106. data/lib/contrast/logger/application.rb +1 -1
  107. data/lib/contrast/logger/format.rb +51 -0
  108. data/lib/contrast/logger/log.rb +16 -9
  109. data/lib/contrast/utils/assess/tracking_util.rb +45 -20
  110. data/lib/contrast/utils/class_util.rb +3 -1
  111. data/lib/contrast/utils/hash_digest.rb +11 -2
  112. data/lib/contrast/utils/invalid_configuration_util.rb +1 -17
  113. data/lib/contrast/utils/inventory_util.rb +2 -7
  114. data/lib/contrast/utils/object_share.rb +0 -1
  115. data/lib/contrast/utils/os.rb +16 -4
  116. data/lib/contrast/utils/stack_trace_utils.rb +0 -1
  117. data/lib/contrast/utils/tag_util.rb +1 -1
  118. data/lib/contrast/utils/thread_tracker.rb +1 -14
  119. data/lib/contrast/utils/timer.rb +1 -17
  120. data/resources/deadzone/policy.json +5 -0
  121. data/ruby-agent.gemspec +4 -4
  122. data/service_executables/VERSION +1 -1
  123. data/service_executables/linux/contrast-service +0 -0
  124. data/service_executables/mac/contrast-service +0 -0
  125. metadata +49 -71
  126. data/funchook/Makefile +0 -29
  127. data/funchook/autom4te.cache/output.0 +0 -4976
  128. data/funchook/autom4te.cache/requests +0 -78
  129. data/funchook/autom4te.cache/traces.0 +0 -364
  130. data/funchook/config.log +0 -490
  131. data/funchook/config.status +0 -1016
  132. data/funchook/configure +0 -4976
  133. data/funchook/src/Makefile +0 -70
  134. data/funchook/src/config.h +0 -101
  135. data/funchook/src/config.h.in +0 -100
  136. data/funchook/src/decoder.o +0 -0
  137. data/funchook/src/distorm.o +0 -0
  138. data/funchook/src/funchook.o +0 -0
  139. data/funchook/src/funchook_io.o +0 -0
  140. data/funchook/src/funchook_syscall.o +0 -0
  141. data/funchook/src/funchook_unix.o +0 -0
  142. data/funchook/src/funchook_x86.o +0 -0
  143. data/funchook/src/instructions.o +0 -0
  144. data/funchook/src/insts.o +0 -0
  145. data/funchook/src/libfunchook.so +0 -0
  146. data/funchook/src/mnemonics.o +0 -0
  147. data/funchook/src/operands.o +0 -0
  148. data/funchook/src/os_func.o +0 -0
  149. data/funchook/src/os_func_unix.o +0 -0
  150. data/funchook/src/prefix.o +0 -0
  151. data/funchook/src/printf_base.o +0 -0
  152. data/funchook/src/textdefs.o +0 -0
  153. data/funchook/src/wstring.o +0 -0
  154. data/funchook/test/Makefile +0 -43
  155. data/funchook/test/funchook_test +0 -0
  156. data/funchook/test/libfunchook_test.so +0 -0
  157. data/funchook/test/test_main.o +0 -0
  158. data/funchook/test/x86_64_test.o +0 -0
  159. data/lib/contrast/agent/assess/adjusted_span.rb +0 -27
  160. data/lib/contrast/agent/socket_client.rb +0 -134
  161. data/lib/contrast/api/connection_status.rb +0 -49
  162. data/lib/contrast/api/socket.rb +0 -43
  163. data/lib/contrast/api/speedracer.rb +0 -188
  164. data/lib/contrast/api/tcp_socket.rb +0 -29
  165. data/lib/contrast/api/unix_socket.rb +0 -25
  166. data/lib/contrast/framework/sinatra/application_helper.rb +0 -51
  167. data/lib/contrast/framework/view_technologies_descriptor.rb +0 -21
  168. data/lib/contrast/internal_exception.rb +0 -8
  169. data/lib/contrast/utils/cache.rb +0 -58
  170. data/lib/contrast/utils/service_sender_util.rb +0 -167
  171. 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,134 +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 'socket'
5
- cs__scoped_require 'uri'
6
-
7
- cs__scoped_require 'contrast/api/speedracer'
8
- cs__scoped_require 'contrast/api/tcp_socket'
9
- cs__scoped_require 'contrast/api/unix_socket'
10
- cs__scoped_require 'contrast/api/connection_status'
11
- cs__scoped_require 'contrast/components/interface'
12
-
13
- module Contrast
14
- module Agent
15
- # SocketClient acts as a interface between the agent and the service. It instantiates a
16
- # service proxy and tracks the state of that proxy.
17
- class SocketClient
18
- include Contrast::Components::Interface
19
-
20
- access_component :app_context, :contrast_service, :logging
21
-
22
- attr_reader :speedracer, :status
23
-
24
- def initialize
25
- @status = Contrast::Api::ConnectionStatus.new
26
- @speedracer = Contrast::Api::Speedracer.new(init_connection)
27
- @ensure_running = Mutex.new
28
- end
29
-
30
- def service_unavailable?
31
- speedracer.nil?
32
- end
33
-
34
- def connection_established?
35
- status.connected?
36
- end
37
-
38
- # Attempt to send the passed message to SpeedRacer. If we're using bundled
39
- # service config option, we must first start up the service. Afterwards, we
40
- # must send agent startup messages no matter what the config options are.
41
- #
42
- # @param event [Contrast::Api::Dtm] One of the DTMs valid for the event
43
- # field of Contrast::Api::Dtm::Message
44
- # @return [Array<Contrast::Api::Settings::AgentSettings>] the response from SpeedRacer or nil
45
- # if it failed to send or the service is unavailable.
46
- def send_to_speedracer event
47
- return if service_unavailable?
48
-
49
- @ensure_running.synchronize do
50
- if CONTRAST_SERVICE.use_bundled_service?
51
- return unless start_or_restart
52
- end
53
- build_service_context unless status.startup_messages_sent?
54
- end
55
-
56
- logger.debug_with_time(event.cs__class.name) do
57
- response = speedracer.send_one event
58
- status.success!
59
- response
60
- end
61
- rescue StandardError => e
62
- status.failure!
63
- logger.error('Unable to send message.', e,
64
- event_id: event.__id__,
65
- event_type: event.cs__class.name)
66
- nil
67
- end
68
-
69
- private
70
-
71
- def init_connection
72
- if CONTRAST_SERVICE.use_tcp?
73
- Contrast::Api::TcpSocket.new(CONTRAST_SERVICE.host, CONTRAST_SERVICE.port)
74
- else
75
- Contrast::Api::UnixSocket.new(CONTRAST_SERVICE.socket_path)
76
- end
77
- end
78
-
79
- def restart?
80
- status.was_connected? && status.failed?
81
- end
82
-
83
- # Now that we know we're running with bundled service option, we can tell SpeedRacer that we're
84
- # ready for it to be started up.
85
- #
86
- # @return [Boolean] true if the service is started, false if the service is still offline after
87
- # we've attempted to start it up.
88
- def start_or_restart
89
- if restart?
90
- logger.info('Attempting to restart service.')
91
- return speedracer.start_service
92
- elsif !status.was_connected?
93
- logger.info('Attempting to start service.')
94
- return speedracer.start_service
95
- end
96
-
97
- true
98
- end
99
-
100
- def build_service_context
101
- agent_startup_msg = APP_CONTEXT.build_agent_startup_message
102
- app_startup_msg = APP_CONTEXT.build_app_startup_message
103
-
104
- # 1 initial attempt, + 3 potential retries.
105
- # The agent-service-api REQUIREMENTS.md spec mandates this #.
106
- 4.times do
107
- log_send_event(agent_startup_msg)
108
- next unless (agent_response = speedracer.send_one(agent_startup_msg))
109
-
110
- # Connection was successful
111
- log_send_event(app_startup_msg)
112
- app_response = speedracer.send_one(app_startup_msg)
113
- [agent_response, app_response].each do |msg|
114
- Contrast::Utils::ServiceResponseUtil.process_response msg
115
- end
116
- status.success!
117
- logger.debug('Successfully sent startup messages to service.')
118
- return
119
- end
120
-
121
- logger.error('Could not send agent startup message context')
122
- rescue StandardError => e
123
- logger.error('Could not build service context', e)
124
- raise # re-raise the error to be caught by SocketClient#send_to_speedracer
125
- end
126
-
127
- def log_send_event event
128
- logger.debug('Immediately sending event.',
129
- event_id: event.__id__,
130
- event_type: event.cs__class.name)
131
- end
132
- end
133
- end
134
- end