summaryrefslogtreecommitdiffstats
path: root/src/egl/main
diff options
context:
space:
mode:
authorFrank Binns <frank.binns@imgtec.com>2015-08-12 16:35:59 +0100
committerEmil Velikov <emil.l.velikov@gmail.com>2015-08-13 17:36:06 +0100
commit21b2c6fd5ea5ec2a810945c3c61b14d93a53991d (patch)
tree1ebb7ce1a1a8410d7cd29e0b3fbf2c5db7370c66 /src/egl/main
parent9a4eae61c24858d69d731d63b141d2acaed40d69 (diff)
downloadexternal_mesa3d-21b2c6fd5ea5ec2a810945c3c61b14d93a53991d.zip
external_mesa3d-21b2c6fd5ea5ec2a810945c3c61b14d93a53991d.tar.gz
external_mesa3d-21b2c6fd5ea5ec2a810945c3c61b14d93a53991d.tar.bz2
egl: don't allow eglGetConfigs to set num_configs param to a negative value
When a buffer is provided to eglGetConfigs it's supposed to set the value of the num_config parameter to the total number of configs that have been copied into this buffer. For some reason the EGL spec doesn't consider it to be an error to pass this function a buffer while specifying its size to be less than 0. Given this, one would expect this combination to result in the num_config parameter being set to 0 but this wasn't the case. This was due to the buffer size being copied straight into num_configs without being clamped to 0. This was causing the following dEQP EGL test to fail: dEQP-EGL.functional.query_config.get_configs.get_configs_bounds Signed-off-by: Frank Binns <frank.binns@imgtec.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Diffstat (limited to 'src/egl/main')
-rw-r--r--src/egl/main/eglarray.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/egl/main/eglarray.c b/src/egl/main/eglarray.c
index 3ccc8a6..d2f39af 100644
--- a/src/egl/main/eglarray.c
+++ b/src/egl/main/eglarray.c
@@ -197,6 +197,9 @@ _eglFlattenArray(_EGLArray *array, void *buffer, EGLint elem_size, EGLint size,
count = array->Size;
if (buffer) {
+ /* clamp size to 0 */
+ if (size < 0)
+ size = 0;
/* do not exceed buffer size */
if (count > size)
count = size;