Sha256: 880ab971986e42a345c583e579d27a02f1a6762faaab2f31ca181b22a2d489b4
Contents?: true
Size: 1002 Bytes
Versions: 3
Compression:
Stored size: 1002 Bytes
Contents
/* Copyright (c) 2020 Contrast Security, Inc. See * https://www.contrastsecurity.com/enduser-terms-0317a for more details. */ #include "cs__assess_yield_track.h" #include "../cs__common/cs__common.h" #include <ruby.h> static VALUE rb_yield_hook(VALUE val, const VALUE self) { VALUE method = rb_funcall(rb_mKernel, rb_sym_method, 0); if(method == split_method && RB_TYPE_P(val, T_STRING)) { rb_funcall(split_class, propagate_yield, 1, val); } VALUE result = rb_yield_original(val); return result; } static int install_yield_hooks() { rb_yield_original = rb_yield; patch_via_funchook(&rb_yield_original, &rb_yield_hook); return 0; } void Init_cs__assess_yield_track(void) { VALUE base = rb_define_class_under(assess_propagator, "Base", rb_cObject); split_class = rb_define_class_under(assess_propagator, "Split", base); propagate_yield = rb_intern("propagate_yield"); split_method = ID2SYM(rb_intern("split")); install_yield_hooks(); }
Version data entries
3 entries across 3 versions & 1 rubygems