diff options
Diffstat (limited to 'lib/asan/asan_errors.h')
| -rw-r--r-- | lib/asan/asan_errors.h | 29 | 
1 files changed, 23 insertions, 6 deletions
diff --git a/lib/asan/asan_errors.h b/lib/asan/asan_errors.h index 7ddd7e94e0fc..b84f56c18535 100644 --- a/lib/asan/asan_errors.h +++ b/lib/asan/asan_errors.h @@ -1,9 +1,8 @@  //===-- asan_errors.h -------------------------------------------*- C++ -*-===//  // -//                     The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception  //  //===----------------------------------------------------------------------===//  // @@ -164,6 +163,21 @@ struct ErrorCallocOverflow : ErrorBase {    void Print();  }; +struct ErrorReallocArrayOverflow : ErrorBase { +  const BufferedStackTrace *stack; +  uptr count; +  uptr size; + +  ErrorReallocArrayOverflow() = default;  // (*) +  ErrorReallocArrayOverflow(u32 tid, BufferedStackTrace *stack_, uptr count_, +                            uptr size_) +      : ErrorBase(tid, 10, "reallocarray-overflow"), +        stack(stack_), +        count(count_), +        size(size_) {} +  void Print(); +}; +  struct ErrorPvallocOverflow : ErrorBase {    const BufferedStackTrace *stack;    uptr size; @@ -372,6 +386,7 @@ struct ErrorGeneric : ErrorBase {    macro(MallocUsableSizeNotOwned)               \    macro(SanitizerGetAllocatedSizeNotOwned)      \    macro(CallocOverflow)                         \ +  macro(ReallocArrayOverflow)                   \    macro(PvallocOverflow)                        \    macro(InvalidAllocationAlignment)             \    macro(InvalidAlignedAllocAlignment)           \ @@ -389,8 +404,10 @@ struct ErrorGeneric : ErrorBase {  #define ASAN_DEFINE_ERROR_KIND(name) kErrorKind##name,  #define ASAN_ERROR_DESCRIPTION_MEMBER(name) Error##name name; -#define ASAN_ERROR_DESCRIPTION_CONSTRUCTOR(name) \ -  ErrorDescription(Error##name const &e) : kind(kErrorKind##name), name(e) {} +#define ASAN_ERROR_DESCRIPTION_CONSTRUCTOR(name)                    \ +  ErrorDescription(Error##name const &e) : kind(kErrorKind##name) { \ +    internal_memcpy(&name, &e, sizeof(name));                       \ +  }  #define ASAN_ERROR_DESCRIPTION_PRINT(name) \    case kErrorKind##name:                   \      return name.Print();  | 
