A parameter verification issue was discovered in Xen through 4.9.x. The function `alloc_heap_pages` allows callers to specify the first NUMA node that should be used for allocations through the `memflags` parameter; the node is extracted using the `MEMF_get_node` macro. While the function checks to see if the special constant `NUMA_NO_NODE` is specified, it otherwise does not handle the case where `node >= MAX_NUMNODES`. This allows an out-of-bounds access to an internal array.
Existe un problema de verificación de parámetros en Xen hasta la versión 4.9.x. La función `alloc_heap_pages` permite que los que la llaman especifiquen el primer nodo NUMA que debería usarse para asignaciones a través del parámetro `memflags`; el nodo se extrae empleando la macro `MEMF_get_node`. Aunque la función comprueba si se especifica la constante especial `NUMA_NO_NODE`, no gestiona el caso en el que `node >= MAX_NUMNODES`. Esto permite el acceso fuera de límites a un array interno.