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);
+       }
 
-       sscanf(str, "%u.%u", &major, &minor);
        return (major * 100) + minor;
 }
 
-- 
1.8.1.4

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to