<div dir="ltr">Thanks, looks good.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Mar 22, 2013 at 7:59 AM, Evgeniy Stepanov <span dir="ltr"><<a href="mailto:eugeni.stepanov@gmail.com" target="_blank">eugeni.stepanov@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: eugenis<br>
Date: Fri Mar 22 06:59:49 2013<br>
New Revision: 177728<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=177728&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=177728&view=rev</a><br>
Log:<br>
[msan] Handle dlopen() failure in dlopen interceptor.<br>
<br>
Modified:<br>
    compiler-rt/trunk/lib/msan/msan_interceptors.cc<br>
    compiler-rt/trunk/lib/msan/tests/msan_test.cc<br>
<br>
Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=177728&r1=177727&r2=177728&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=177728&r1=177727&r2=177728&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)<br>
+++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Fri Mar 22 06:59:49 2013<br>
@@ -807,7 +807,7 @@ INTERCEPTOR(void *, dlopen, const char *<br>
   EnterLoader();<br>
   link_map *map = (link_map *)REAL(dlopen)(filename, flag);<br>
   ExitLoader();<br>
-  if (!__msan_has_dynamic_component()) {<br>
+  if (!__msan_has_dynamic_component() && map) {<br>
     // If msandr didn't clear the shadow before the initializers ran, we do it<br>
     // ourselves afterwards.<br>
     UnpoisonMappedDSO(map);<br>
<br>
Modified: compiler-rt/trunk/lib/msan/tests/msan_test.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/msan_test.cc?rev=177728&r1=177727&r2=177728&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/msan_test.cc?rev=177728&r1=177727&r2=177728&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/msan/tests/msan_test.cc (original)<br>
+++ compiler-rt/trunk/lib/msan/tests/msan_test.cc Fri Mar 22 06:59:49 2013<br>
@@ -1397,6 +1397,13 @@ TEST(MemorySanitizer, dlopen) {<br>
<br>
   delete[] path;<br>
 }<br>
+<br>
+// Regression test for a crash in dlopen() interceptor.<br>
+TEST(MemorySanitizer, dlopenFailed) {<br>
+  const char *path = "/<a href="http://libmsan_loadable_does_not_exist.x86_64.so" target="_blank">libmsan_loadable_does_not_exist.x86_64.so</a>";<br>
+  void *lib = dlopen(path, RTLD_LAZY);<br>
+  ASSERT_EQ(0, lib);<br>
+}<br>
 } // namespace<br>
<br>
 TEST(MemorySanitizer, scanf) {<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>