static void WriteReadWriteData(CF_DB *db) { bool flip = CoinFlip(); char *data; if(flip) { data = READWRITEDATA1; } else { data = READWRITEDATA2; } //char key[64]; //snprintf(key, sizeof(key), "%050d", READWRITEKEY); static const int key = READWRITEKEY; if(!WriteComplexKeyDB(db, (const char *)&key, sizeof(key), data, sizeof(READWRITEDATA1))) { printf("Error write!\n"); pthread_exit((void*)STATUS_ERROR); } }
static void DBWriteTestData(CF_DB *db) { //char key[64]; //char value[128]; for(int i = 0; i < RECORD_COUNT_JUNK; i++) { bool flip = CoinFlip(); int value_num; if(flip) { value_num = i + VALUE_OFFSET1; } else { value_num = i + VALUE_OFFSET2; } //snprintf(key, sizeof(key), "%050d", i); //snprintf(value, sizeof(value), "%0100d", value_num); if (!WriteComplexKeyDB(db, (const char *)&i, sizeof(i), &value_num, sizeof(value_num))) { CfOut(cf_error, "", "Unable to write data to database"); pthread_exit((void*)STATUS_ERROR); } } WriteReadWriteData(db); }
static void WriteReadWriteData(CF_DB *db) { const char *const data = CoinFlip() ? READWRITEDATA1 : READWRITEDATA2; static const int key = READWRITEKEY; if(!WriteComplexKeyDB(db, (const char *)&key, sizeof(key), data, sizeof(READWRITEDATA1))) { printf("Error write!\n"); pthread_exit((void*)STATUS_ERROR); } }
static void test_setup(void) { snprintf(CFWORKDIR, CF_BUFSIZE, "/tmp/changes_migration_test.XXXXXX"); mkdtemp(CFWORKDIR); char state_dir[PATH_MAX]; snprintf(state_dir, sizeof(state_dir), "%s/state", CFWORKDIR); mkdir(state_dir, 0755); CF_DB *db; assert_true(OpenDB(&db, dbid_checksums)); // Hand crafted from the old version of NewIndexKey(). char checksum_key[NO_FILES][30] = { { 'M','D','5','\0','\0','\0','\0','\0', '/','e','t','c','/','h','o','s','t','s','\0' }, { 'M','D','5','\0','\0','\0','\0','\0', '/','e','t','c','/','p','a','s','s','w','d','\0' }, { 'M','D','5','\0','\0','\0','\0','\0', '/','f','i','l','e','1','\0' }, { 'M','D','5','\0','\0','\0','\0','\0', '/','f','i','l','e','2','\0' }, }; for (int c = 0; c < NO_FILES; c++) { int ksize = CHANGES_HASH_FILE_NAME_OFFSET + strlen(checksum_key[c] + CHANGES_HASH_FILE_NAME_OFFSET) + 1; int vsize = strlen(CHECKSUM_VALUE[c]) + 1; assert_true(WriteComplexKeyDB(db, checksum_key[c], ksize, CHECKSUM_VALUE[c], vsize)); } CloseDB(db); assert_true(OpenDB(&db, dbid_filestats)); char *filestat_key[NO_FILES] = { "/etc/hosts", "/etc/passwd", "/file1", "/file2", }; filestat_value.st_uid = 4321; memset(&filestat_value, 0, sizeof(filestat_value)); for (int c = 0; c < NO_FILES; c++) { assert_true(WriteDB(db, filestat_key[c], &filestat_value, sizeof(filestat_value))); } CloseDB(db); }
static int WriteHash(CF_DB *dbp, enum cfhashes type, char *name, unsigned char digest[EVP_MAX_MD_SIZE + 1]) { char *key; ChecksumValue *value; int ret, keysize; key = NewIndexKey(type, name, &keysize); value = NewHashValue(digest); ret = WriteComplexKeyDB(dbp, key, keysize, value, sizeof(ChecksumValue)); DeleteIndexKey(key); DeleteHashValue(value); return ret; }
static void DBWriteTestData(CF_DB *db) { for(int i = 0; i < RECORD_COUNT_JUNK; i++) { bool flip = CoinFlip(); int value_num = i + (flip ? VALUE_OFFSET1 : VALUE_OFFSET2); if (!WriteComplexKeyDB(db, (const char *)&i, sizeof(i), &value_num, sizeof(value_num))) { Log(LOG_LEVEL_ERR, "Unable to write data to database"); pthread_exit((void*)STATUS_ERROR); } } WriteReadWriteData(db); }
int WriteDB(CF_DB *dbp, char *key, const void *src, int srcSz) { return WriteComplexKeyDB(dbp,key,strlen(key)+1,src,srcSz); }