diff options
author | Evan Huus <eapache@gmail.com> | 2012-11-11 16:43:33 +0000 |
---|---|---|
committer | Evan Huus <eapache@gmail.com> | 2012-11-11 16:43:33 +0000 |
commit | acb53e7d4caf8a9747824606abad294ec5061091 (patch) | |
tree | 7d52e2c2d249f509617be3f60c4cf76456a05304 /frame_data_sequence.c | |
parent | 68d621b396583ce49a9325261c097f27f42dd126 (diff) |
Call frame_data_cleanup() before freeing frame_data structures in
free_frame_data_sequence(). Prevents part of the leak identified in
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7885
svn path=/trunk/; revision=46000
Diffstat (limited to 'frame_data_sequence.c')
-rw-r--r-- | frame_data_sequence.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/frame_data_sequence.c b/frame_data_sequence.c index 718838cf76..9bb32d161e 100644 --- a/frame_data_sequence.c +++ b/frame_data_sequence.c @@ -257,16 +257,20 @@ free_frame_data_sequence(frame_data_sequence *fds) } else if (fds->count <= NODES_PER_LEVEL*NODES_PER_LEVEL) { /* It's a 2-level tree. */ level1 = fds->ptree_root; - for (i = 0; i < NODES_PER_LEVEL && level1[i] != NULL; i++) + for (i = 0; i < NODES_PER_LEVEL && level1[i] != NULL; i++) { + frame_data_cleanup(level1[i]); g_free(level1[i]); + } g_free(level1); } else if (fds->count <= NODES_PER_LEVEL*NODES_PER_LEVEL*NODES_PER_LEVEL) { /* It's a 3-level tree. */ level2 = fds->ptree_root; for (i = 0; i < NODES_PER_LEVEL && level2[i] != NULL; i++) { level1 = level2[i]; - for (j = 0; j < NODES_PER_LEVEL && level1[i] != NULL; j++) + for (j = 0; j < NODES_PER_LEVEL && level1[i] != NULL; j++) { + frame_data_cleanup(level1[j]); g_free(level1[j]); + } g_free(level1); } g_free(level2); @@ -280,8 +284,10 @@ free_frame_data_sequence(frame_data_sequence *fds) level2 = level3[i]; for (j = 0; j < NODES_PER_LEVEL && level2[i] != NULL; j++) { level1 = level2[j]; - for (k = 0; k < NODES_PER_LEVEL && level1[k] != NULL; k++) + for (k = 0; k < NODES_PER_LEVEL && level1[k] != NULL; k++) { + frame_data_cleanup(level1[k]); g_free(level1[k]); + } } g_free(level2); } |