From 0c0e54cbb967150b91b3d83fb75c8c971875cb21 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 15 Mar 2010 14:32:52 +0100 Subject: [PATCH] talloc_stack: make sure we never let talloc_tos() return ts->talloc_stack[-1] In smbd there's a small gab between TALLOC_FREE(frame); before we call smbd_parent_loop() where we don't have a valid talloc stackframe. smbd_parent_loop() calls talloc_stackframe() only within the while(1) loop. As DEBUG(2,("waiting for connections")) uses talloc_tos() to construct the time header for the debug message we crash on some systems. metze (cherry picked from commit 10ed809a1a31be50ce09142eb99b3a243ae8b940) --- lib/util/talloc_stack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/util/talloc_stack.c b/lib/util/talloc_stack.c index 596efbf6cd3..58d22e378a6 100644 --- a/lib/util/talloc_stack.c +++ b/lib/util/talloc_stack.c @@ -181,7 +181,7 @@ TALLOC_CTX *talloc_tos(void) struct talloc_stackframe *ts = (struct talloc_stackframe *)SMB_THREAD_GET_TLS(global_ts); - if (ts == NULL) { + if (ts == NULL || ts->talloc_stacksize == 0) { talloc_stackframe(); ts = (struct talloc_stackframe *)SMB_THREAD_GET_TLS(global_ts); DEBUG(0, ("no talloc stackframe around, leaking memory\n")); -- 2.11.4.GIT