qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] hostmem: Validate host-nodes before setting bit


From: David Hildenbrand
Subject: Re: [Qemu-devel] [PATCH] hostmem: Validate host-nodes before setting bitmap
Date: Fri, 30 Nov 2018 10:37:24 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0

On 30.11.18 09:37, Markus Armbruster wrote:
> Eduardo Habkost <address@hidden> writes:
> 
>> host_memory_backend_set_host_nodes() was not validating
>> host-nodes before writing to backend->host_nodes, making QEMU
>> write beyond the end of the bitmap.
>>
>> Fix the crash and add a simple regression test for the fix.
>>
>> Reported-by: Markus Armbruster <address@hidden>
>> Signed-off-by: Eduardo Habkost <address@hidden>
>> ---
>>  backends/hostmem.c                   | 13 +++++++---
>>  tests/acceptance/host-nodes-limit.py | 36 ++++++++++++++++++++++++++++
>>  2 files changed, 46 insertions(+), 3 deletions(-)
>>  create mode 100644 tests/acceptance/host-nodes-limit.py
>>
>> diff --git a/backends/hostmem.c b/backends/hostmem.c
>> index 1a89342039..ef199d32fd 100644
>> --- a/backends/hostmem.c
>> +++ b/backends/hostmem.c
>> @@ -103,11 +103,18 @@ host_memory_backend_set_host_nodes(Object *obj, 
>> Visitor *v, const char *name,
>>  {
>>  #ifdef CONFIG_NUMA
>>      HostMemoryBackend *backend = MEMORY_BACKEND(obj);
>> -    uint16List *l = NULL;
>> +    uint16List *l, *host_nodes = NULL;
>>  
>> -    visit_type_uint16List(v, name, &l, errp);
>> +    visit_type_uint16List(v, name, &host_nodes, errp);
>> +
>> +    for (l = host_nodes; l; l = l->next) {
>> +        if (l->value >= MAX_NODES) {
>> +            error_setg(errp, "Invalid host-nodes value: %d", l->value);
>> +            return;
>> +        }
>> +    }
>>  
>> -    while (l) {
>> +    for (l = host_nodes; l; l = l->next) {
>>          bitmap_set(backend->host_nodes, l->value, 1);
>>          l = l->next;
>>      }
> 
> Pre-existing: leaks the list created by visit_type_uint16List(), or am I
> confused?
> 

I think you're right.

-- 

Thanks,

David / dhildenb



reply via email to

[Prev in Thread] Current Thread [Next in Thread]