[Mesa-dev] glxinfo proposed change
Ian Romanick
idr at freedesktop.org
Mon Jan 7 16:12:04 PST 2013
On 01/07/2013 01:08 PM, Jorge Ramirez Ortiz, HCL Europe wrote:
>
>
>> -----Original Message-----
>> From: Ian Romanick [mailto:idr at freedesktop.org]
>> Sent: Monday, January 07, 2013 7:48 PM
>> To: Jorge Ramirez Ortiz, HCL Europe
>> Cc: Dan Nicholson; mesa-dev at lists.freedesktop.org
>> Subject: Re: [Mesa-dev] glxinfo proposed change
>>
>> On 01/07/2013 06:35 AM, Jorge Ramirez Ortiz, HCL Europe wrote:
>>>> -----Original Message-----
>>>> From: Dan Nicholson [mailto:dbn.lists at gmail.com]
>>>> Sent: Monday, January 07, 2013 2:31 PM
>>>> To: Jorge Ramirez Ortiz, HCL Europe
>>>> Cc: mesa-dev at lists.freedesktop.org
>>>> Subject: Re: [Mesa-dev] glxinfo proposed change
>>>>
>>>> On Mon, Jan 7, 2013 at 5:06 AM, Jorge Ramirez Ortiz, HCL Europe
>>>> <Jorge.Ramirez-Ortiz at hcl.com> wrote:
>>>>> Hi all,
>>>>>
>>>>> Does this patch make sense? glVersion can be NULL and not having the
>>>> changes below could cause a SIGSEGV
>>>>>
>>>>> [jramirez at calypso-2 mesa-demos.git (tmp *)]$ git diff src/xdemos/glxinfo.c
>>>>> diff --git a/src/xdemos/glxinfo.c b/src/xdemos/glxinfo.c
>>>>> index aa6430d..97b6539 100644
>>>>> --- a/src/xdemos/glxinfo.c
>>>>> +++ b/src/xdemos/glxinfo.c
>>>>> @@ -639,7 +639,7 @@ print_screen_info(Display *dpy, int scrnum, Bool
>>>> allowDirect, Bool limits, Bool
>>>>> printf("OpenGL renderer string: %s\n", glRenderer);
>>>>> printf("OpenGL version string: %s\n", glVersion);
>>>>> #ifdef GL_VERSION_2_0
>>>>> - if (glVersion[0] >= '2' && glVersion[1] == '.') {
>>>>> + if (glVersion && glVersion[0] >= '2' && glVersion[1] == '.') {
>>>>> char *v = (char *) glGetString(GL_SHADING_LANGUAGE_VERSION);
>>>>> printf("OpenGL shading language version string: %s\n", v);
>>>>> }
>>>>
>>>> Normally, this is a good idea. However, glVersion is already
>>>> dereferenced in the printf on the previous line. So, any actual
>>>> checking for NULL glVersion should at least come earlier in the
>>>> function. On the other hand, returning NULL from
>>>> glGetString(GL_VERSION) might be so rare that bothering to guard for
>>>> it would be more effort than it's worth.
>>>
>>> Bear in mind that printf of a null string wont SIGSEGV.
>>> Only trying to access glVersion[] elements presents -and indeed is - a risk and
>> therefore a critical bug (for my usual standards that is).
>>
>> The critical bug is that glGetString is not allowed to return NULL.
>> Your GL is horrifically broken in that case, and no application will
>> work either.
>
> You are absolutely wrong. NULL is a valid return value. Please read the code.
I've been working on this project for almost twelve years, and I've been
a voting member of the OpenGL Architecture Review Board for almost as
long. I'm quite familiar with the code.
glGetString returns 0 only when an error is generated, and it is not
allowed to generate an error for a valid enum, such as GL_VERSION, when
there is a context. Previous code in glxinfo has already made the
context current and checked that it was successful.
I wasn't interested in seeing this patch ever land, and after your rude,
disrespectful attitude, I'm even less interested.
More information about the mesa-dev
mailing list