mirror of
https://git.proxmox.com/git/mirror_corosync
synced 2025-08-04 01:28:47 +00:00
Test the key value size for typed keys.
git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2513 fd59a12c-fef9-0310-b244-a6a79926bd2f
This commit is contained in:
parent
0c9a6c49ff
commit
e66297a886
41
exec/objdb.c
41
exec/objdb.c
@ -513,15 +513,54 @@ static int object_key_create_typed(
|
||||
int found = 0;
|
||||
int i;
|
||||
size_t key_len = strlen(key_name);
|
||||
size_t expected_size;
|
||||
int test_size_by_type = CS_TRUE;
|
||||
|
||||
objdb_rdlock();
|
||||
|
||||
res = hdb_handle_get (&object_instance_database,
|
||||
object_handle, (void *)&instance);
|
||||
object_handle, (void *)&instance);
|
||||
if (res != 0) {
|
||||
goto error_exit;
|
||||
}
|
||||
|
||||
switch (value_type) {
|
||||
case OBJDB_VALUETYPE_INT16:
|
||||
expected_size = sizeof (int16_t);
|
||||
break;
|
||||
case OBJDB_VALUETYPE_UINT16:
|
||||
expected_size = sizeof (uint16_t);
|
||||
break;
|
||||
case OBJDB_VALUETYPE_INT32:
|
||||
expected_size = sizeof (int32_t);
|
||||
break;
|
||||
case OBJDB_VALUETYPE_UINT32:
|
||||
expected_size = sizeof (uint32_t);
|
||||
break;
|
||||
case OBJDB_VALUETYPE_INT64:
|
||||
expected_size = sizeof (int64_t);
|
||||
break;
|
||||
case OBJDB_VALUETYPE_UINT64:
|
||||
expected_size = sizeof (uint64_t);
|
||||
break;
|
||||
case OBJDB_VALUETYPE_FLOAT:
|
||||
expected_size = sizeof (float);
|
||||
break;
|
||||
case OBJDB_VALUETYPE_DOUBLE:
|
||||
expected_size = sizeof (double);
|
||||
break;
|
||||
case OBJDB_VALUETYPE_ANY:
|
||||
default:
|
||||
test_size_by_type = CS_FALSE;
|
||||
break;
|
||||
}
|
||||
if (test_size_by_type) {
|
||||
if (expected_size != value_len) {
|
||||
//printf ("%s exp:%d != len:%d\n", key_name, expected_size, value_len);
|
||||
goto error_put;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Do validation check if validation is configured for the parent object
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user