The test t_tsearch.c is crashing on Windows XP. Function twalk() invokes
twalk() in infinite recursion which cause stack overflow.

The reason is that tdestroy() frees the memory for the root node which
invalidates root pointer and accessing it later cause use-after-free error.
Seems that msvcrt memory allocator on Windows XP can trigger this crash
more often than on other Windows versions.

Fix this issue, after the tdestroy() call, sets the root node pointer to NULL.
---
 mingw-w64-crt/testcases/t_tsearch.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/mingw-w64-crt/testcases/t_tsearch.c 
b/mingw-w64-crt/testcases/t_tsearch.c
index 496525980529..91c0de50e9f0 100644
--- a/mingw-w64-crt/testcases/t_tsearch.c
+++ b/mingw-w64-crt/testcases/t_tsearch.c
@@ -117,6 +117,7 @@ int main (int argc, char **argv)
  printf("----------\n");
 
  tdestroy(root, noop_free);
+ root = NULL;
  printf("---------- tree after deletion of all nodes using tdestroy() 
only:\n");
  nodes_printed = 0;
  twalk(root, print_node);
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to