1*7330f729Sjoerg //===--- llvm-demangle-fuzzer.cpp - Fuzzer for the Itanium Demangler ------===//
2*7330f729Sjoerg //
3*7330f729Sjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*7330f729Sjoerg // See https://llvm.org/LICENSE.txt for license information.
5*7330f729Sjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*7330f729Sjoerg //
7*7330f729Sjoerg //===----------------------------------------------------------------------===//
8*7330f729Sjoerg 
9*7330f729Sjoerg #include "llvm/Demangle/Demangle.h"
10*7330f729Sjoerg 
11*7330f729Sjoerg #include <cstdint>
12*7330f729Sjoerg #include <cstdlib>
13*7330f729Sjoerg #include <string>
14*7330f729Sjoerg 
LLVMFuzzerTestOneInput(const uint8_t * Data,size_t Size)15*7330f729Sjoerg extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
16*7330f729Sjoerg   std::string NullTerminatedString((const char *)Data, Size);
17*7330f729Sjoerg   int status = 0;
18*7330f729Sjoerg   if (char *demangle = llvm::itaniumDemangle(NullTerminatedString.c_str(), nullptr,
19*7330f729Sjoerg                                          nullptr, &status))
20*7330f729Sjoerg     free(demangle);
21*7330f729Sjoerg 
22*7330f729Sjoerg   return 0;
23*7330f729Sjoerg }
24