[Openais] [PATCH corosync/trunk] Test the key value size for typed keys.
Steven Dake
sdake at redhat.com
Sun Oct 11 15:47:39 PDT 2009
looks good
On Mon, 2009-10-12 at 11:49 +1300, angus salkeld wrote:
> This just add some validation based on the expected
> vs. actual key value size for typed keys.
>
> -Angus
>
> Signed-off-by: Angus Salkeld <angus.salkeld at gmail.com>
> ---
> exec/objdb.c | 41 ++++++++++++++++++++++++++++++++++++++++-
> 1 files changed, 40 insertions(+), 1 deletions(-)
>
> diff --git a/exec/objdb.c b/exec/objdb.c
> index 726b302..3334460 100644
> --- a/exec/objdb.c
> +++ b/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
> */
More information about the Openais
mailing list