Committed as 2513.

-Angus

On Sun, 2009-10-11 at 15:47 -0700, Steven Dake wrote:
> 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 <[email protected]>
> > ---
> >  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
> >      */
> 

_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to