1*99451b44SJordan Rupprecht #include <cstdlib> 2*99451b44SJordan Rupprecht #include <cstring> 3*99451b44SJordan Rupprecht #include <iostream> 4*99451b44SJordan Rupprecht 5*99451b44SJordan Rupprecht namespace { 6*99451b44SJordan Rupprecht const char *const SEGFAULT_COMMAND = "segfault"; 7*99451b44SJordan Rupprecht const char *const ABORT_COMMAND = "abort"; 8*99451b44SJordan Rupprecht } 9*99451b44SJordan Rupprecht main(int argc,char ** argv)10*99451b44SJordan Rupprechtint main(int argc, char **argv) { 11*99451b44SJordan Rupprecht if (argc < 2) { 12*99451b44SJordan Rupprecht std::cout << "expected at least one command provided on the command line" 13*99451b44SJordan Rupprecht << std::endl; 14*99451b44SJordan Rupprecht } 15*99451b44SJordan Rupprecht 16*99451b44SJordan Rupprecht // Process command line args. 17*99451b44SJordan Rupprecht for (int i = 1; i < argc; ++i) { 18*99451b44SJordan Rupprecht const char *const command = argv[i]; 19*99451b44SJordan Rupprecht if (std::strstr(command, SEGFAULT_COMMAND)) { 20*99451b44SJordan Rupprecht // Perform a null pointer access. 21*99451b44SJordan Rupprecht int *const null_int_ptr = nullptr; 22*99451b44SJordan Rupprecht *null_int_ptr = 0xDEAD; 23*99451b44SJordan Rupprecht } else if (std::strstr(command, ABORT_COMMAND)) { 24*99451b44SJordan Rupprecht std::abort(); 25*99451b44SJordan Rupprecht } else { 26*99451b44SJordan Rupprecht std::cout << "Unsupported command: " << command << std::endl; 27*99451b44SJordan Rupprecht } 28*99451b44SJordan Rupprecht } 29*99451b44SJordan Rupprecht 30*99451b44SJordan Rupprecht return 0; 31*99451b44SJordan Rupprecht } 32