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*7330f729Sjoergextern "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