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