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

Paul Berry stereotype441 at gmail.com
Wed Feb 27 10:32:07 PST 2013


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



More information about the Piglit mailing list