[前][次][番号順一覧][スレッド一覧]

ruby-changes:63181

From: Aaron <ko1@a...>
Date: Tue, 29 Sep 2020 00:20:47 +0900 (JST)
Subject: [ruby-changes:63181] b328b83026 (master): make ext/coverage ASAN friendly

https://git.ruby-lang.org/ruby.git/commit/?id=b328b83026

From b328b830264408b467a5c904a474e7112c5d678c Mon Sep 17 00:00:00 2001
From: Aaron Patterson <tenderlove@r...>
Date: Fri, 25 Sep 2020 14:55:12 -0700
Subject: make ext/coverage ASAN friendly


diff --git a/ext/coverage/coverage.c b/ext/coverage/coverage.c
index 5b29ea2..be61595 100644
--- a/ext/coverage/coverage.c
+++ b/ext/coverage/coverage.c
@@ -11,6 +11,7 @@ https://github.com/ruby/ruby/blob/trunk/ext/coverage/coverage.c#L11
 #include "gc.h"
 #include "internal/hash.h"
 #include "internal/thread.h"
+#include "internal/sanitizers.h"
 #include "ruby.h"
 #include "vm_core.h"
 
@@ -150,6 +151,9 @@ method_coverage_i(void *vstart, void *vend, size_t stride, void *data) https://github.com/ruby/ruby/blob/trunk/ext/coverage/coverage.c#L151
     VALUE ncoverages = *(VALUE*)data, v;
 
     for (v = (VALUE)vstart; v != (VALUE)vend; v += stride) {
+        void *poisoned = asan_poisoned_object_p(v);
+        asan_unpoison_object(v, false);
+
 	if (RB_TYPE_P(v, T_IMEMO) && imemo_type(v) == imemo_ment) {
 	    const rb_method_entry_t *me = (rb_method_entry_t *) v;
 	    VALUE path, first_lineno, first_column, last_lineno, last_column;
@@ -189,6 +193,10 @@ method_coverage_i(void *vstart, void *vend, size_t stride, void *data) https://github.com/ruby/ruby/blob/trunk/ext/coverage/coverage.c#L193
 		rb_hash_aset(methods, key, rcount);
 	    }
 	}
+
+        if (poisoned) {
+            asan_poison_object(v);
+        }
     }
     return 0;
 }
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]