glx: Fix synthetic error generation in __glXSendError
authorHal Gentz <zegentzy@protonmail.com>
Sun, 24 Mar 2019 22:52:39 +0000 (16:52 -0600)
committerAdam Jackson <ajax@redhat.com>
Mon, 29 Apr 2019 16:52:48 +0000 (12:52 -0400)
commite91ee763c378d03883eb88cf0eadd8aa916f7878
tree3c36a4f895003a4bb48d6d3c18edd25b4a263f9f
parent9628631a380ff24630bf97b982df07b4e7e2a79f
glx: Fix synthetic error generation in __glXSendError

To quote Uli Schlachter, who understands this stuff more than I do:

>   The function __glXSendError() in mesa's src/glx/glx_error.c invents an X11
> protocol error out of thin air. For the sequence number it uses dpy->request.
> This is the sequence number of the last request that was sent. _XError() will
> then update dpy->last_request_read based on the sequence number of the error
> that just "came in".
>
>   If now another something comes in with a sequence number less than
> dpy->last_request_read, since sequence numbers are monotonically increasing,
> widen() will incorrectly add 1<<32 to the sequence number and things might go
> downhill afterwards.

`__glXSendErrorForXcb` was also patched, as that's the function that
`glXCreateContextAttribsARB` actually uses.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99781
Cc: mesa-stable@lists.freedesktop.org
Fixes: ad503c41 'apple: Initial import of libGL for OSX from AppleSGLX svn repository'
Reviewed-by: Adam Jackson <ajax@redhat.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Signed-off-by: Hal Gentz <zegentzy@protonmail.com>
src/glx/glx_error.c