Sha256: 8e44cdbf93c6a758727ff357f9804dc1c41e36eab95dedc61c375c8bb4c95c22
Contents?: true
Size: 1.12 KB
Versions: 9
Compression:
Stored size: 1.12 KB
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 <funchook.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() { funchook_t *funchook = funchook_create(); rb_yield_original = rb_yield; funchook_prepare(funchook, (void **)&rb_yield_original, rb_yield_hook); funchook_install(funchook, 0); 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
9 entries across 9 versions & 1 rubygems