Sha256: 8477e317efdb904ebc70103505b11b5f49a303d6331be5a50235b4a9cb6e550b

Contents?: true

Size: 1.63 KB

Versions: 5

Compression:

Stored size: 1.63 KB

Contents

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

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

static VALUE contrast_assess_marshal_module_load(const int argc,
                                                 const VALUE *argv) {
    VALUE result;
    VALUE source_string;
    result = rb_call_super(argc, argv);

    if (argc >= 1) {
        source_string = argv[0];

        VALUE tracked =
            rb_funcall(properties_hash, rb_sym_hash_tracked, 1, source_string);

        if (tracked == Qtrue) {
            VALUE skip =
                rb_funcall(contrast_patcher(), rb_sym_skip_assess_analysis, 0);

            if (skip == Qfalse) {
                VALUE scope =
                    rb_funcall(contrast_patcher(), rb_sym_enter_scope, 0);
                rb_funcall(marshal_module, rb_sym_assess_load_trigger_check, 2,
                           source_string, result);
                rb_funcall(contrast_patcher(), rb_sym_exit_scope, 0);
            }
        }
    }
    return result;
}

void Init_cs__assess_marshal_module(void) {
    // Contrast::Agent::Assess::Tracker::PROPERTIES_HASH
    VALUE tracker = rb_define_class_under(assess, "Tracker", rb_cObject);
    properties_hash = rb_const_get(tracker, rb_intern("PROPERTIES_HASH"));
    marshal_module =
        rb_define_class_under(core_assess, "MarshalPropagator", rb_cObject);
    rb_sym_assess_load_trigger_check = rb_intern("cs__load_trigger_check");

    contrast_register_singleton_prepend_patch(
        "Marshal", "load", &contrast_assess_marshal_module_load);
}

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
contrast-agent-4.2.0 ext/cs__assess_marshal_module/cs__assess_marshal_module.c
contrast-agent-4.1.0 ext/cs__assess_marshal_module/cs__assess_marshal_module.c
contrast-agent-4.0.0 ext/cs__assess_marshal_module/cs__assess_marshal_module.c
contrast-agent-3.16.0 ext/cs__assess_marshal_module/cs__assess_marshal_module.c
contrast-agent-3.15.0 ext/cs__assess_marshal_module/cs__assess_marshal_module.c