#include #include #include #include void clean_data(char *input) { for (int i = 0; i < strlen(input); i ++) { if (! isalpha(input[i])) input[i] = '-'; } } char *clean_data_2(char *input) { char *result = strdup(input); for (int i = 0; i < strlen(result); i ++) { if (! isalpha(result[i])) result[i] = '-'; } return result; } int is_data_trusted(char *input) { if (strcmp(input, "test")) { return 1; } return 0; } void cmdi(char *input) { char buffer[256] = { 0 }; snprintf(buffer, sizeof(buffer) - 1, "cat %s", input); system(buffer); } void no_cmdi_1(char *input) { clean_data(input); char buffer[256] = { 0 }; snprintf(buffer, sizeof(buffer) - 1, "cat %s", input); system(buffer); } void no_cmdi_2(char *input) { char *tmp = clean_data_2(input); char buffer[256] = { 0 }; snprintf(buffer, sizeof(buffer) - 1, "cat %s", tmp); system(buffer); } void no_cmdi_3(char *input) { if (! is_data_trusted(input)) { return; } char buffer[256] = { 0 }; snprintf(buffer, sizeof(buffer) - 1, "cat %s", input); system(buffer); } int main(int argc, char **argv) { if (argc != 2) { return 1; } cmdi(argv[1]); no_cmdi_1(argv[1]); no_cmdi_2(argv[1]); no_cmdi_3(argv[1]); return 0; }