[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