/* * Bulkstat test case from Roger Willcocks */ #include #include #include #include #include char buffer[32768]; int overwrote; void die(char *func) { perror(func); exit(1); } void nuke() { int i; for (i = 2048; i < 32768-1; i++) if (buffer[i] == 'I' && buffer[i+1] == 'N') { buffer[i] = buffer[i+1] = 'X'; overwrote = 1; } } int main(int argc, char* argv[]) { int f; loff_t offset; if (argc != 3) { printf("%s \n", argv[0]); exit(1); } f = open(argv[1], O_RDWR); offset = atoll(argv[2]); if (f < 0) die("open"); if (lseek(f, offset, SEEK_SET) < 0) die("lseek"); if (read(f, buffer, 32768) != 32768) die("read"); printf("Starting overwrite\n"); nuke(); if (lseek(f, offset, SEEK_SET) < 0) die("lseek"); if (write(f, buffer, 32768) != 32768) die("write"); if (!overwrote) printf("Did not overwrite any inodes\n"); printf("Overwrite complete\n"); close(f); return 0; }