Mesa (glsl2): glcpp: Fix use-after-free error from #undef directive.

Ian Romanick idr at kemper.freedesktop.org
Wed Jul 21 00:07:47 UTC 2010


Module: Mesa
Branch: glsl2
Commit: 61ebc01dfecda0963a184e881ea966e2d92f0519
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=61ebc01dfecda0963a184e881ea966e2d92f0519

Author: Carl Worth <cworth at cworth.org>
Date:   Mon Jul 19 18:02:12 2010 -0700

glcpp: Fix use-after-free error from #undef directive.

By taking advantage of the recently-added hash_table_remove function.

With this change, all existing tests are now valgrind-clean.

---

 src/glsl/glcpp/glcpp-parse.y |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
index e5544fe..a2b54ef 100644
--- a/src/glsl/glcpp/glcpp-parse.y
+++ b/src/glsl/glcpp/glcpp-parse.y
@@ -202,10 +202,7 @@ control_line:
 |	HASH_UNDEF IDENTIFIER NEWLINE {
 		macro_t *macro = hash_table_find (parser->defines, $2);
 		if (macro) {
-			/* XXX: Need hash table to support a real way
-			 * to remove an element rather than prefixing
-			 * a new node with data of NULL like this. */
-			hash_table_insert (parser->defines, NULL, $2);
+			hash_table_remove (parser->defines, $2);
 			talloc_free (macro);
 		}
 		talloc_free ($2);




More information about the mesa-commit mailing list