From: Filipe Cabecinhas Date: Tue, 2 Jan 2018 13:46:12 +0000 (+0000) Subject: Revert "ASan+operator new[]: Fix operator new[] cookie poisoning" X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1a835b5d57da69d0b8a94fbfd631a4c5b6aa0fbe;p=clang Revert "ASan+operator new[]: Fix operator new[] cookie poisoning" This reverts r321645. I missed a compiler-rt test that needs updating. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321647 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/ItaniumCXXABI.cpp b/lib/CodeGen/ItaniumCXXABI.cpp index bfb18aee2e..c375b82ea9 100644 --- a/lib/CodeGen/ItaniumCXXABI.cpp +++ b/lib/CodeGen/ItaniumCXXABI.cpp @@ -1847,7 +1847,8 @@ Address ItaniumCXXABI::InitializeArrayCookie(CodeGenFunction &CGF, llvm::Instruction *SI = CGF.Builder.CreateStore(NumElements, NumElementsPtr); // Handle the array cookie specially in ASan. - if (CGM.getLangOpts().Sanitize.has(SanitizerKind::Address) && AS == 0) { + if (CGM.getLangOpts().Sanitize.has(SanitizerKind::Address) && AS == 0 && + expr->getOperatorNew()->isReplaceableGlobalAllocationFunction()) { // The store to the CookiePtr does not need to be instrumented. CGM.getSanitizerMetadata()->disableSanitizerForInstruction(SI); llvm::FunctionType *FTy = diff --git a/test/CodeGen/address-sanitizer-and-array-cookie.cpp b/test/CodeGen/address-sanitizer-and-array-cookie.cpp index 90b6ad0e05..ea89537789 100644 --- a/test/CodeGen/address-sanitizer-and-array-cookie.cpp +++ b/test/CodeGen/address-sanitizer-and-array-cookie.cpp @@ -7,7 +7,7 @@ namespace std { std::nothrow_t nothrow; } void *operator new[](size_t, const std::nothrow_t &) throw(); -void *operator new[](size_t, void *); +void *operator new[](size_t, char *); struct C { int x; @@ -53,11 +53,3 @@ C *CallPlacementNew() { } // ASAN-LABEL: CallPlacementNew // ASAN-NOT: __asan_poison_cxx_array_cookie - -void *operator new[](size_t n, int); - -C *CallNewWithArgs() { -// ASAN-LABEL: CallNewWithArgs -// ASAN: call void @__asan_poison_cxx_array_cookie - return new (123) C[20]; -}