[PATCH wayland] server: validate resource versions at creation time

Derek Foreman derekf at osg.samsung.com
Fri Jan 15 07:50:40 PST 2016


On 15/01/16 03:14 AM, Marek Chalupa wrote:
> Hi,
> 
> On 01/14/2016 09:46 PM, Derek Foreman wrote:
>> We shouldn't ever create a resource with version less than 1 or
>> greater than the interface version.
>>
>> Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
>> ---
>>
>> I'm a little nervous about this one.
>>
>> Anything doing this probably gets what it deserves, but it does
>> break wayland's own resource-test...
> 
> It broke the test because we used wl_display_interface there and this
> interface can have only version 1, right? The previous patch of yours
> fixes it/

Right - with that patch in all tests succeed.

>>
>> I guess a compromise is landing it without the return NULL...
>>
>>   src/wayland-server.c | 7 +++++++
>>   1 file changed, 7 insertions(+)
>>
>> diff --git a/src/wayland-server.c b/src/wayland-server.c
>> index 3a7d79d..8719417 100644
>> --- a/src/wayland-server.c
>> +++ b/src/wayland-server.c
>> @@ -1349,6 +1349,13 @@ wl_resource_create(struct wl_client *client,
>>   {
>>       struct wl_resource *resource;
>>
>> +    if (version < 1 || version > interface->version) {
>> +        wl_log("wl_resource_create: invalid resource version %d "
>> +               "for interface '%s' - must be in range [0, %d]\n",
> 
> The range should be [1, %d], shouldn't it?

Absolutely.  Thanks.

>> +               version, interface->name, interface->version);
>> +        return NULL;
>> +    }
>> +
>>       resource = malloc(sizeof *resource);
>>       if (resource == NULL)
>>           return NULL;
>>
> 
> I think that checking the version is right, so
> 
> Reviewed-by: Marek Chalupa <mchqwerty at gmail.com>
> 
> (for all three patches)
> 
> Cheers,
> Marek



More information about the wayland-devel mailing list