From f8bbf1cef9da21ea55649f5a05a88479853cd8eb Mon Sep 17 00:00:00 2001 From: Raghavendra Bhat Date: Mon, 16 Apr 2012 14:50:16 +0530 Subject: cli: do not put the frame->local to mempool since its a calloced structure In cli, frame->local is not allocated from the internal mempool, rather its calloced. So while destroying the stack, we have to set frame->local to NULL. Otherwise if frame->local is not NULL, STACK_DESTROY will try to put it back to the mempool and thus segfault. Change-Id: I5bd17d099e16fb8e73f3250cc022008e26e28f50 BUG: 812735 Signed-off-by: Raghavendra Bhat Reviewed-on: http://review.gluster.com/3167 Tested-by: Gluster Build System Reviewed-by: Amar Tumballi --- cli/src/cli-cmd.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'cli/src/cli-cmd.h') diff --git a/cli/src/cli-cmd.h b/cli/src/cli-cmd.h index 82e0ff113..ba877e2c4 100644 --- a/cli/src/cli-cmd.h +++ b/cli/src/cli-cmd.h @@ -30,6 +30,19 @@ #include "cli.h" #include "list.h" +#define CLI_STACK_DESTROY(_frame) \ + do { \ + if (_frame) { \ + if (_frame->local) { \ + gf_log ("cli", GF_LOG_DEBUG, "frame->local " \ + "is not NULL (%p)", _frame->local); \ + cli_local_wipe (_frame->local); \ + _frame->local = NULL; \ + } \ + STACK_DESTROY (_frame->root); \ + } \ + } while (0); + typedef enum { GF_ANSWER_YES = 1, GF_ANSWER_NO = 2 -- cgit