[Mesa-dev] [PATCH 12/15] egl: add eglCreateImage
Chad Versace
chad.versace at intel.com
Wed May 27 12:07:15 PDT 2015
On Fri 15 May 2015, Emil Velikov wrote:
> On 12/05/15 22:54, Marek Olšák wrote:
> > From: Marek Olšák <marek.olsak at amd.com>
> >
> > ---
> > src/egl/main/eglapi.c | 38 ++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 38 insertions(+)
> >
> > diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
> > index 6457798..34a113b 100644
> > --- a/src/egl/main/eglapi.c
> > +++ b/src/egl/main/eglapi.c
> > @@ -251,6 +251,30 @@ _eglUnlockDisplay(_EGLDisplay *dpy)
> > }
> >
> >
> > +static EGLint *
> > +_eglConvertAttribsToInt(const EGLAttrib *attr_list)
> > +{
> > + EGLint *int_attribs = NULL;
> > +
> > + /* Convert attributes from EGLAttrib[] to EGLint[] */
> > + if (attr_list) {
> > + int i, size = 0;
> > +
> > + while (attr_list[size] != EGL_NONE)
> > + size += 2;
> > +
> > + if (size) {
> > + size += 1; /* add space for EGL_NONE */
> > + int_attribs = malloc(size * sizeof(int_attribs[0]));
> > +
> > + for (i = 0; i < size; i++)
> > + int_attribs[i] = attr_list[i];
> In the unlikely event that malloc fails, it'll be nice to not crash.
NAK.
There is a stack overflow vulnerability here, even when malloc succeeds.
An attacker can pass a very large but valid `EGLint *attrib_list` into
an EGL entry point, forcing the size calculation given to malloc to
overflow to a small positive integer. Then _eglConvertAttribsToInt will
blithely copy a portion (perhaps most) of the attacker's attrib list onto
the stack!
To prevent the stack overflow, _eglConvertAttribsToInt should use
calloc() and abort if allocation fails.
More information about the mesa-dev
mailing list