Paul Berry <[email protected]> writes: > On 27 February 2013 10:44, Eric Anholt <[email protected]> wrote: > >> Paul Berry <[email protected]> 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.
pgpBuPALta52n.pgp
Description: PGP signature
_______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
