xref: /oneTBB/test/tbb/test_fuzzing.cpp (revision 11545bd6)
148ba0d7aSDmitri Mokhov /*
248ba0d7aSDmitri Mokhov     Copyright (c) 2023 Intel Corporation
348ba0d7aSDmitri Mokhov 
448ba0d7aSDmitri Mokhov     Licensed under the Apache License, Version 2.0 (the "License");
548ba0d7aSDmitri Mokhov     you may not use this file except in compliance with the License.
648ba0d7aSDmitri Mokhov     You may obtain a copy of the License at
748ba0d7aSDmitri Mokhov 
848ba0d7aSDmitri Mokhov         http://www.apache.org/licenses/LICENSE-2.0
948ba0d7aSDmitri Mokhov 
1048ba0d7aSDmitri Mokhov     Unless required by applicable law or agreed to in writing, software
1148ba0d7aSDmitri Mokhov     distributed under the License is distributed on an "AS IS" BASIS,
1248ba0d7aSDmitri Mokhov     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1348ba0d7aSDmitri Mokhov     See the License for the specific language governing permissions and
1448ba0d7aSDmitri Mokhov     limitations under the License.
1548ba0d7aSDmitri Mokhov */
1648ba0d7aSDmitri Mokhov 
1748ba0d7aSDmitri Mokhov //! \file test_fuzzing.cpp
18*11545bd6SPavel Kumbrasev //! \brief Test the [internal] of environment variables
1948ba0d7aSDmitri Mokhov 
2048ba0d7aSDmitri Mokhov #include <fuzzer/FuzzedDataProvider.h>
2148ba0d7aSDmitri Mokhov 
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)2248ba0d7aSDmitri Mokhov extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
2348ba0d7aSDmitri Mokhov   FuzzedDataProvider provider(data, size);
2448ba0d7aSDmitri Mokhov   for (auto var : {"INTEL_ITTNOTIFY_GROUPS", "INTEL_LIBITTNOTIFY32",
2548ba0d7aSDmitri Mokhov                    "INTEL_LIBITTNOTIFY64", "KMP_FOR_TCHECK", "KMP_FOR_TPROFILE",
2648ba0d7aSDmitri Mokhov                    "TBB_ENABLE_SANITIZERS", "TBB_MALLOC_DISABLE_REPLACEMENT",
2748ba0d7aSDmitri Mokhov                    "TBB_MALLOC_SET_HUGE_SIZE_THRESHOLD",
2848ba0d7aSDmitri Mokhov                    "TBB_MALLOC_USE_HUGE_PAGES", "TBB_VERSION"}) {
2948ba0d7aSDmitri Mokhov     std::string val = provider.ConsumeRandomLengthString();
3048ba0d7aSDmitri Mokhov #if _WIN32
3148ba0d7aSDmitri Mokhov     _putenv_s(var, val.c_str());
3248ba0d7aSDmitri Mokhov #else
3348ba0d7aSDmitri Mokhov     setenv(var, val.c_str(), 1);
3448ba0d7aSDmitri Mokhov #endif
3548ba0d7aSDmitri Mokhov   }
3648ba0d7aSDmitri Mokhov 
3748ba0d7aSDmitri Mokhov   if (std::system(CMD) != 0)
3848ba0d7aSDmitri Mokhov     __builtin_trap();
3948ba0d7aSDmitri Mokhov 
4048ba0d7aSDmitri Mokhov   return 0;
4148ba0d7aSDmitri Mokhov }
42