summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Jackson <ajax@freedesktop.org>2006-04-06 23:50:44 +0000
committerAdam Jackson <ajax@freedesktop.org>2006-04-06 23:50:44 +0000
commit282a89c5bbd0ec3490d5cbfbe6807e95234adaf5 (patch)
treee3f2930334612b29988798fd10ea45576e5034d5
parent92e11f943c8363148f7e5836425706b00078dfa6 (diff)
downloadglu-282a89c5bbd0ec3490d5cbfbe6807e95234adaf5.tar.gz
Coverity #1083: Fix a use after free case.
-rw-r--r--src/libtess/dict.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/libtess/dict.c b/src/libtess/dict.c
index fac8032..c20f694 100644
--- a/src/libtess/dict.c
+++ b/src/libtess/dict.c
@@ -35,8 +35,8 @@
/*
** Author: Eric Veach, July 1994.
**
-** $Date: 2001/03/17 00:25:41 $ $Revision: 1.1 $
-** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libtess/dict.c,v 1.1 2001/03/17 00:25:41 brianp Exp $
+** $Date: 2006/04/06 23:50:44 $ $Revision: 1.2 $
+** $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libtess/dict.c,v 1.2 2006/04/06 23:50:44 ajax Exp $
*/
#include <stddef.h>
@@ -68,9 +68,13 @@ Dict *dictNewDict( void *frame,
void dictDeleteDict( Dict *dict )
{
DictNode *node;
+ int done = 0;
- for( node = dict->head.next; node != &dict->head; node = node->next ) {
+ for( node = dict->head.next; ; node = node->next ) {
+ done = (node == &dict->head);
memFree( node );
+ if (done)
+ break;
}
memFree( dict );
}