void func(char *data) { char buffer[5]; strcpy(buffer, data); } int main(int argc, char *argv[], char *envp[]) { int i; // clearing out the stack memory // clearing all arguments except the first memset(argv[0], 0, strlen(argv[0])); for(i=2; argv[i] != 0; i++) memset(argv[i], 0, strlen(argv[i])); // clearing all environment variables for(i=0; envp[i] != 0; i++) memset(envp[i], 0, strlen(envp[i])); // If the first argument is too long, exit if(strlen(argv[1]) > 40) { printf("first arg is too long.\n"); exit(1); } func(argv[1]); return 0; }