From 6d5b1d76abab528b2ec0ed6d27de2470ce98da5a Mon Sep 17 00:00:00 2001 From: Tilghman Lesher Date: Tue, 17 Jun 2008 18:23:01 +0000 Subject: [PATCH] If we don't match registrar when destroying a context, it can cause a crash. (closes issue #12835) Reported by: ys Patches: pbx.c.diff uploaded by ys (license 281) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@123358 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/pbx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main/pbx.c b/main/pbx.c index 9654bd88fb..a0ba3a9014 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -7153,13 +7153,13 @@ void __ast_context_destroy(struct ast_context *list, struct ast_hashtab *context struct ast_context *tmp, *tmpl=NULL; struct ast_exten *exten_item, *prio_item; - for (tmp = list; tmp; ) { struct ast_context *next = NULL; /* next starting point */ for (; tmp; tmpl = tmp, tmp = tmp->next) { ast_debug(1, "check ctx %s %s\n", tmp->name, tmp->registrar); - if ( registrar || (con && strcasecmp(tmp->name, con->name)) ) + if ( (registrar && !strcasecmp(tmp->registrar, registrar)) || (con && !strcasecmp(tmp->name, con->name)) ) { break; /* found it */ + } } if (!tmp) /* not found, we are done */ break;