110ab2aceSGeorge Karpenkov //===- FuzzerUtilLinux.cpp - Misc utils for Linux. ------------------------===// 210ab2aceSGeorge Karpenkov // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 610ab2aceSGeorge Karpenkov // 710ab2aceSGeorge Karpenkov //===----------------------------------------------------------------------===// 810ab2aceSGeorge Karpenkov // Misc utils for Linux. 910ab2aceSGeorge Karpenkov //===----------------------------------------------------------------------===// 10226866e1SDokyung Song #include "FuzzerPlatform.h" 119802089eSVitaly Buka #if LIBFUZZER_LINUX || LIBFUZZER_NETBSD || LIBFUZZER_FREEBSD || \ 12*53065c54SDavid Carlier LIBFUZZER_EMSCRIPTEN 1304304d12SMatt Morehouse #include "FuzzerCommand.h" 1410ab2aceSGeorge Karpenkov 1510ab2aceSGeorge Karpenkov #include <stdlib.h> 1663f48717SKostya Serebryany #include <sys/types.h> 1763f48717SKostya Serebryany #include <sys/wait.h> 18e5b603a4SMarco Vanotti #include <unistd.h> 1963f48717SKostya Serebryany 2010ab2aceSGeorge Karpenkov 2110ab2aceSGeorge Karpenkov namespace fuzzer { 2210ab2aceSGeorge Karpenkov ExecuteCommand(const Command & Cmd)2304304d12SMatt Morehouseint ExecuteCommand(const Command &Cmd) { 2404304d12SMatt Morehouse std::string CmdLine = Cmd.toString(); 2563f48717SKostya Serebryany int exit_code = system(CmdLine.c_str()); 2663f48717SKostya Serebryany if (WIFEXITED(exit_code)) 2763f48717SKostya Serebryany return WEXITSTATUS(exit_code); 2863f48717SKostya Serebryany return exit_code; 2910ab2aceSGeorge Karpenkov } 3010ab2aceSGeorge Karpenkov DiscardOutput(int Fd)31e5b603a4SMarco Vanottivoid DiscardOutput(int Fd) { 32e5b603a4SMarco Vanotti FILE* Temp = fopen("/dev/null", "w"); 33e5b603a4SMarco Vanotti if (!Temp) 34e5b603a4SMarco Vanotti return; 35e5b603a4SMarco Vanotti dup2(fileno(Temp), Fd); 36e5b603a4SMarco Vanotti fclose(Temp); 37e5b603a4SMarco Vanotti } 38e5b603a4SMarco Vanotti 3910ab2aceSGeorge Karpenkov } // namespace fuzzer 4010ab2aceSGeorge Karpenkov 419802089eSVitaly Buka #endif 42