[compiler-rt] r177728 - [msan] Handle dlopen() failure in dlopen interceptor.
Reid Kleckner
rnk at google.com
Fri Mar 22 08:45:14 PDT 2013
Thanks, looks good.
On Fri, Mar 22, 2013 at 7:59 AM, Evgeniy Stepanov <eugeni.stepanov at gmail.com
> wrote:
> Author: eugenis
> Date: Fri Mar 22 06:59:49 2013
> New Revision: 177728
>
> URL: http://llvm.org/viewvc/llvm-project?rev=177728&view=rev
> Log:
> [msan] Handle dlopen() failure in dlopen interceptor.
>
> Modified:
> compiler-rt/trunk/lib/msan/msan_interceptors.cc
> compiler-rt/trunk/lib/msan/tests/msan_test.cc
>
> Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=177728&r1=177727&r2=177728&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)
> +++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Fri Mar 22 06:59:49
> 2013
> @@ -807,7 +807,7 @@ INTERCEPTOR(void *, dlopen, const char *
> EnterLoader();
> link_map *map = (link_map *)REAL(dlopen)(filename, flag);
> ExitLoader();
> - if (!__msan_has_dynamic_component()) {
> + if (!__msan_has_dynamic_component() && map) {
> // If msandr didn't clear the shadow before the initializers ran, we
> do it
> // ourselves afterwards.
> UnpoisonMappedDSO(map);
>
> Modified: compiler-rt/trunk/lib/msan/tests/msan_test.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/msan_test.cc?rev=177728&r1=177727&r2=177728&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/msan/tests/msan_test.cc (original)
> +++ compiler-rt/trunk/lib/msan/tests/msan_test.cc Fri Mar 22 06:59:49 2013
> @@ -1397,6 +1397,13 @@ TEST(MemorySanitizer, dlopen) {
>
> delete[] path;
> }
> +
> +// Regression test for a crash in dlopen() interceptor.
> +TEST(MemorySanitizer, dlopenFailed) {
> + const char *path = "/libmsan_loadable_does_not_exist.x86_64.so";
> + void *lib = dlopen(path, RTLD_LAZY);
> + ASSERT_EQ(0, lib);
> +}
> } // namespace
>
> TEST(MemorySanitizer, scanf) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130322/015b613f/attachment.html>
More information about the llvm-commits
mailing list