diff options
Diffstat (limited to 'lib/tsan/rtl/tsan_mman.cc')
| -rw-r--r-- | lib/tsan/rtl/tsan_mman.cc | 17 | 
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/tsan/rtl/tsan_mman.cc b/lib/tsan/rtl/tsan_mman.cc index b160a9736d5d8..f4a95d870cab8 100644 --- a/lib/tsan/rtl/tsan_mman.cc +++ b/lib/tsan/rtl/tsan_mman.cc @@ -1,9 +1,8 @@  //===-- tsan_mman.cc ------------------------------------------------------===//  // -//                     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  //  //===----------------------------------------------------------------------===//  // @@ -202,6 +201,16 @@ void *user_calloc(ThreadState *thr, uptr pc, uptr size, uptr n) {    return SetErrnoOnNull(p);  } +void *user_reallocarray(ThreadState *thr, uptr pc, void *p, uptr size, uptr n) { +  if (UNLIKELY(CheckForCallocOverflow(size, n))) { +    if (AllocatorMayReturnNull()) +      return SetErrnoOnNull(nullptr); +    GET_STACK_TRACE_FATAL(thr, pc); +    ReportReallocArrayOverflow(size, n, &stack); +  } +  return user_realloc(thr, pc, p, size * n); +} +  void OnUserAlloc(ThreadState *thr, uptr pc, uptr p, uptr sz, bool write) {    DPrintf("#%d: alloc(%zu) = %p\n", thr->tid, sz, p);    ctx->metamap.AllocBlock(thr, pc, p, sz);  | 
