89 lines
2.1 KiB
C
89 lines
2.1 KiB
C
// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
/* Copyright 2019 IBM Corp. */
|
|
|
|
#include "secvar_api_test.c"
|
|
|
|
const char *secvar_test_name = "getvar";
|
|
|
|
// Run tests on the less obvious features of secvar_get
|
|
// Includes:
|
|
// - Partial reads
|
|
// - Size queries (NULL buffer)
|
|
//int run_test_helper(uint64_t bank_enum)
|
|
int run_test(void)
|
|
{
|
|
int64_t rc;
|
|
|
|
uint64_t size;
|
|
char *temp = zalloc(100);
|
|
char key[1024] = {0};
|
|
|
|
struct secvar *var;
|
|
size_t data_size = sizeof("foobar");
|
|
char *data = zalloc(data_size);
|
|
uint64_t key_len = 4;
|
|
memcpy(data, "foobar", data_size);
|
|
memcpy(key, "test", 4);
|
|
|
|
// List should be empty at start
|
|
rc = secvar_get(key, key_len, temp, &size);
|
|
ASSERT(rc == OPAL_EMPTY);
|
|
ASSERT(list_length(&variable_bank) == 0);
|
|
|
|
// Manually add variables, and check get_variable call
|
|
var = new_secvar(key, key_len, data, data_size, 0);
|
|
list_add_tail(&variable_bank, &var->link);
|
|
|
|
ASSERT(list_length(&variable_bank) == 1);
|
|
|
|
// TEST ONLY DATA
|
|
// Test actual variable get
|
|
size = data_size;
|
|
rc = secvar_get(key, key_len, temp, &size);
|
|
ASSERT(rc == OPAL_SUCCESS);
|
|
ASSERT(0 == memcmp("foobar", var->data, size));
|
|
|
|
// Test buffer too small
|
|
size = data_size / 2;
|
|
memset(temp, 0, 100);
|
|
rc = secvar_get(key, key_len, temp, &size);
|
|
ASSERT(rc == OPAL_PARTIAL);
|
|
|
|
size = 0;
|
|
rc = secvar_get(key, key_len, temp, &size);
|
|
ASSERT(rc == OPAL_PARTIAL);
|
|
ASSERT(size == data_size);
|
|
|
|
// Test size query w/ no data
|
|
size = 0;
|
|
rc = secvar_get(key, key_len, NULL, &size);
|
|
ASSERT(rc == OPAL_SUCCESS);
|
|
ASSERT(size == data_size);
|
|
|
|
/**** Error/Bad param cases ****/
|
|
// NULL key
|
|
rc = secvar_get(NULL, key_len, data, &data_size);
|
|
ASSERT(rc == OPAL_PARAMETER);
|
|
// zero key_len
|
|
rc = secvar_get(key, 0, data, &data_size);
|
|
ASSERT(rc == OPAL_PARAMETER);
|
|
// NULL size, valid data
|
|
rc = secvar_get(key, key_len, data, NULL);
|
|
ASSERT(rc == OPAL_PARAMETER);
|
|
|
|
secvar_enabled = 0;
|
|
rc = secvar_get(key, key_len, data, &data_size);
|
|
ASSERT(rc == OPAL_UNSUPPORTED);
|
|
secvar_enabled = 1;
|
|
|
|
secvar_ready = 0;
|
|
rc = secvar_get(key, key_len, data, &data_size);
|
|
ASSERT(rc == OPAL_RESOURCE);
|
|
secvar_ready = 1;
|
|
|
|
free(data);
|
|
free(temp);
|
|
|
|
return 0;
|
|
}
|
|
|