[PATCH] D24392: [asan] Reify ErrorSanitizerGetAllocatedSizeNotOwned
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 13 10:36:38 PDT 2016
Feel free to land. I don't think I was taking about D23875
<https://reviews.llvm.org/D23875>.
On Tue, Sep 13, 2016 at 7:48 AM Filipe Cabecinhas <
filcab+llvm.phabricator at gmail.com> wrote:
> filcab updated this revision to Diff 71170.
> filcab added a comment.
>
> Updating after https://reviews.llvm.org/D23875 (consistency on
> constructor args and member order)
>
> Vitaly: I know you approved most of these, but you also said we should
> revisit them after https://reviews.llvm.org/D23875 lands. Let me know if
> they're ok to commit or if you still want changes.
>
>
> https://reviews.llvm.org/D24392
>
> Files:
> lib/asan/asan_errors.cc
> lib/asan/asan_errors.h
> lib/asan/asan_report.cc
>
> Index: lib/asan/asan_report.cc
> ===================================================================
> --- lib/asan/asan_report.cc
> +++ lib/asan/asan_report.cc
> @@ -372,15 +372,9 @@
> void ReportSanitizerGetAllocatedSizeNotOwned(uptr addr,
> BufferedStackTrace *stack) {
> ScopedInErrorReport in_report;
> - Decorator d;
> - Printf("%s", d.Warning());
> - Report("ERROR: AddressSanitizer: attempting to call "
> - "__sanitizer_get_allocated_size() for pointer which is "
> - "not owned: %p\n", addr);
> - Printf("%s", d.EndWarning());
> - stack->Print();
> - DescribeAddressIfHeap(addr);
> - ReportErrorSummary("bad-__sanitizer_get_allocated_size", stack);
> + ErrorSanitizerGetAllocatedSizeNotOwned error(GetCurrentTidOrInvalid(),
> stack,
> + addr);
> + in_report.ReportError(error);
> }
>
> void ReportStringFunctionMemoryRangesOverlap(const char *function,
> Index: lib/asan/asan_errors.h
> ===================================================================
> --- lib/asan/asan_errors.h
> +++ lib/asan/asan_errors.h
> @@ -176,15 +176,33 @@
> void Print();
> };
>
> +struct ErrorSanitizerGetAllocatedSizeNotOwned : ErrorBase {
> + // ErrorSanitizerGetAllocatedSizeNotOwned doesn't own the stack trace.
> + const BufferedStackTrace *stack;
> + AddressDescription addr_description;
> + // VS2013 doesn't implement unrestricted unions, so we need a trivial
> default
> + // constructor
> + ErrorSanitizerGetAllocatedSizeNotOwned() = default;
> + ErrorSanitizerGetAllocatedSizeNotOwned(u32 tid, BufferedStackTrace
> *stack_,
> + uptr addr)
> + : ErrorBase(tid),
> + stack(stack_),
> + addr_description(addr, /*shouldLockThreadRegistry=*/false) {
> + scariness.Clear();
> + }
> + void Print();
> +};
> +
> // clang-format off
> #define ASAN_FOR_EACH_ERROR_KIND(macro) \
> macro(StackOverflow) \
> macro(DeadlySignal) \
> macro(DoubleFree) \
> macro(NewDeleteSizeMismatch) \
> macro(FreeNotMalloced) \
> macro(AllocTypeMismatch) \
> - macro(MallocUsableSizeNotOwned)
> + macro(MallocUsableSizeNotOwned) \
> + macro(SanitizerGetAllocatedSizeNotOwned)
> // clang-format on
>
> #define ASAN_DEFINE_ERROR_KIND(name) kErrorKind##name,
> Index: lib/asan/asan_errors.cc
> ===================================================================
> --- lib/asan/asan_errors.cc
> +++ lib/asan/asan_errors.cc
> @@ -177,4 +177,17 @@
> ReportErrorSummary("bad-malloc_usable_size", stack);
> }
>
> +void ErrorSanitizerGetAllocatedSizeNotOwned::Print() {
> + Decorator d;
> + Printf("%s", d.Warning());
> + Report(
> + "ERROR: AddressSanitizer: attempting to call "
> + "__sanitizer_get_allocated_size() for pointer which is not owned:
> %p\n",
> + addr_description.Address());
> + Printf("%s", d.EndWarning());
> + stack->Print();
> + addr_description.Print();
> + ReportErrorSummary("bad-__sanitizer_get_allocated_size", stack);
> +}
> +
> } // namespace __asan
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160913/a24ce146/attachment.html>
More information about the llvm-commits
mailing list