From 5d8dfe892a2ea89f706ee140c3bdcfd89fe03fda Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Wed, 21 Jan 2026 22:40:55 +0100 Subject: Add Redis source code for testing --- examples/redis-unstable/utils/corrupt_rdb.c | 49 +++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 examples/redis-unstable/utils/corrupt_rdb.c (limited to 'examples/redis-unstable/utils/corrupt_rdb.c') diff --git a/examples/redis-unstable/utils/corrupt_rdb.c b/examples/redis-unstable/utils/corrupt_rdb.c new file mode 100644 index 0000000..d1a093c --- /dev/null +++ b/examples/redis-unstable/utils/corrupt_rdb.c @@ -0,0 +1,49 @@ +/* Trivia program to corrupt an RDB file in order to check the RDB check + * program behavior and effectiveness. + * + * Copyright (C) 2016-Present Redis Ltd. All rights reserved. + * + * Licensed under your choice of (a) the Redis Source Available License 2.0 + * (RSALv2); or (b) the Server Side Public License v1 (SSPLv1); or (c) the + * GNU Affero General Public License v3 (AGPLv3). + */ + +#include +#include +#include +#include +#include +#include + +int main(int argc, char **argv) { + struct stat stat; + int fd, cycles; + + if (argc != 3) { + fprintf(stderr,"Usage: \n"); + exit(1); + } + + srand(time(NULL)); + char *filename = argv[1]; + cycles = atoi(argv[2]); + fd = open(filename,O_RDWR); + if (fd == -1) { + perror("open"); + exit(1); + } + fstat(fd,&stat); + + while(cycles--) { + unsigned char buf[32]; + unsigned long offset = rand()%stat.st_size; + int writelen = 1+rand()%31; + int j; + + for (j = 0; j < writelen; j++) buf[j] = (char)rand(); + lseek(fd,offset,SEEK_SET); + printf("Writing %d bytes at offset %lu\n", writelen, offset); + write(fd,buf,writelen); + } + return 0; +} -- cgit v1.2.3