From 2e7e153a2af1456515d43b6381e38534b069b1c2 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 19 Dec 2022 14:10:58 +0900 Subject: [Bug #19242] Prohibit circular causes to be loaded --- eval_error.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'eval_error.c') diff --git a/eval_error.c b/eval_error.c index e02f54e8e6..948a205dd9 100644 --- a/eval_error.c +++ b/eval_error.c @@ -290,6 +290,17 @@ show_cause(VALUE errinfo, VALUE str, VALUE opt, VALUE highlight, VALUE reverse, } } +void +rb_exc_check_circular_cause(VALUE exc) +{ + VALUE cause = exc, shown_causes = 0; + do { + if (shown_cause_p(cause, &shown_causes)) { + rb_raise(rb_eArgError, "circular causes"); + } + } while (!NIL_P(cause = rb_attr_get(cause, id_cause))); +} + void rb_error_write(VALUE errinfo, VALUE emesg, VALUE errat, VALUE str, VALUE opt, VALUE highlight, VALUE reverse) { -- cgit v1.2.1