Sha256: 249e6f555ea70c43b35e1774cc6e007e08894b21b2020b8b16273e4ea681a5d5

Contents?: true

Size: 1.29 KB

Versions: 7

Compression:

Stored size: 1.29 KB

Contents

/* Copyright (c) 2020 Contrast Security, Inc.  See
 * https://www.contrastsecurity.com/enduser-terms-0317a for more details. */

#include "cs__assess_kernel.h"
#include "../cs__common/cs__common.h"
#include <ruby.h>

VALUE
contrast_patched_kernel_exec(const int argc, const VALUE *argv,
                             const VALUE self) {
    int nested_scope =
        RTEST(rb_funcall(contrast_patcher(), rb_sym_in_scope, 0));

    if (!nested_scope && argc > 0) {
        rb_funcall(contrast_patcher(), rb_sym_enter_scope, 0);
        VALUE data = argv[0];
        rb_funcall(kernel_propagator, exec_apply_trigger, 1, data);
        rb_funcall(contrast_patcher(), rb_sym_exit_scope, 0);
    }

    return rb_funcall(self, rb_intern("cs__assess_kernel_exec"), argc, *argv);
}

void Init_cs__assess_kernel(void) {
    kernel_propagator = rb_define_module("KernelPropagator");
    exec_apply_trigger = rb_intern("apply_trigger");

    VALUE singleton = rb_singleton_class(rb_mKernel);

    contrast_alias_method(rb_mKernel, "cs__assess_kernel_exec", "exec");
    rb_define_private_method(rb_mKernel, "exec", contrast_patched_kernel_exec,
                             -1);

    contrast_alias_method(singleton, "cs__assess_kernel_exec", "exec");
    rb_define_method(singleton, "exec", contrast_patched_kernel_exec, -1);
}

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
contrast-agent-3.10.2 ext/cs__assess_kernel/cs__assess_kernel.c
contrast-agent-3.10.1 ext/cs__assess_kernel/cs__assess_kernel.c
contrast-agent-3.10.0 ext/cs__assess_kernel/cs__assess_kernel.c
contrast-agent-3.9.1 ext/cs__assess_kernel/cs__assess_kernel.c
contrast-agent-3.9.0 ext/cs__assess_kernel/cs__assess_kernel.c
contrast-agent-3.8.5 ext/cs__assess_kernel/cs__assess_kernel.c
contrast-agent-3.8.4 ext/cs__assess_kernel/cs__assess_kernel.c