[Piglit] [PATCH RESEND 3/3] glslparsertest: Avoid uninitialized vars in parse_glsl_version_number.

Eric Anholt eric at anholt.net
Thu Feb 28 09:16:22 PST 2013


Paul Berry <stereotype441 at gmail.com> writes:

> On 27 February 2013 10:44, Eric Anholt <eric at anholt.net> wrote:
>
>> Paul Berry <stereotype441 at gmail.com> writes:
>>
>> > Previously, if the user specified an ill-formed GLSL version number
>> > (or the implementation supplied an ill-formed number in its response
>> > to glGetString(GL_SHADING_LANGUAGE_VERSION)), glslparsertest would
>> > access uninitialized variables, resulting in unpredictable (and often
>> > confusing) behaviour.
>> >
>> > With this patch, glslparser test accepts version numbers either of the
>> > form "<int>" or "<int>.<int>".  Ill-formed version numbers lead to a
>> > test failure.
>> > ---
>> >  tests/glslparsertest/glslparsertest.c | 10 +++++++---
>> >  1 file changed, 7 insertions(+), 3 deletions(-)
>> >
>> > diff --git a/tests/glslparsertest/glslparsertest.c
>> b/tests/glslparsertest/glslparsertest.c
>> > index 43bef03..c9696be 100644
>> > --- a/tests/glslparsertest/glslparsertest.c
>> > +++ b/tests/glslparsertest/glslparsertest.c
>> > @@ -339,10 +339,14 @@ int process_options(int argc, char **argv)
>> >  static unsigned
>> >  parse_glsl_version_number(const char *str)
>> >  {
>> > -     unsigned major;
>> > -     unsigned minor;
>> > +     unsigned major = 0;
>> > +     unsigned minor = 0;
>> > +
>> > +     if (sscanf(str, "%u.%u", &major, &minor) == 0) {
>> > +             printf("Ill-formed GLSL version number: %s\n", str);
>> > +             piglit_report_result(PIGLIT_FAIL);
>> > +     }
>>
>> For full pedantry, I think that would be sscanf(...) != 2.
>>
>
> Actually, sscanf(...) == 0 allows the version number to be supplied as
> either "<int>" or "<int>.<int>".

Oh, this function gets reused for other purposes besides GL version
strings, right.  Not that I particularly think we want people writing
just "3" for GLSL ES 3.00 for example.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20130228/9a54a4a6/attachment.pgp>


More information about the Piglit mailing list