diff options
author | Peter Zhu <peter@peterzhu.ca> | 2020-06-10 10:17:56 -0400 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2020-06-10 16:36:44 -0700 |
commit | 0213f5b08a470d322edb54bda85523d05b2ea4c7 (patch) | |
tree | 3406431541d5b27d9ba4c4c314f1b63f3875c95c | |
parent | 04fddf35734f04fd16824a847cad499465663a5f (diff) | |
download | ruby-0213f5b08a470d322edb54bda85523d05b2ea4c7.tar.gz |
Fix ASan crash
-rw-r--r-- | gc.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -11514,6 +11514,8 @@ const char * rb_raw_obj_info(char *buff, const int buff_size, VALUE obj) { int pos = 0; + void *poisoned = asan_poisoned_object_p(obj); + asan_unpoison_object(obj, false); #define BUFF_ARGS buff + pos, buff_size - pos #define APPENDF(f) if ((pos += snprintf f) >= buff_size) goto end @@ -11744,6 +11746,10 @@ rb_raw_obj_info(char *buff, const int buff_size, VALUE obj) #undef C } end: + if (poisoned) { + asan_poison_object(obj); + } + return buff; #undef APPENDF #undef BUFF_ARGS |