From 35a2f14d96a5f83e7f16e68a8a7a65fc92ed9d78 Mon Sep 17 00:00:00 2001
From: BJ Weschke <bweschke@btwtech.com>
Date: Fri, 16 Jun 2006 12:55:18 +0000
Subject: [PATCH]  Quit early and print a LOG_WARNING if we are trying to check
 devicestate on a Local channel that's been improperly defined.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@34463 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_local.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/channels/chan_local.c b/channels/chan_local.c
index a865aa6b42..29f5d8afe1 100644
--- a/channels/chan_local.c
+++ b/channels/chan_local.c
@@ -126,16 +126,23 @@ static int local_devicestate(void *data)
 	int res;
 		
 	exten = ast_strdupa(data);
-	if ((context  = strchr(exten, '@'))) {
-		*context = '\0';
-		context = context + 1;
+	context = strchr(exten, '@');
+
+	if (!context) {
+		ast_log(LOG_WARNING, "Someone used Local/%s somewhere without a @context. This is bad.\n", exten);
+		return AST_DEVICE_INVALID;	
 	}
+
+	*context = '\0';
+	context = context + 1;
+
 	if (option_debug > 2)
 		ast_log(LOG_DEBUG, "Checking if extension %s@%s exists (devicestate)\n", exten, context);
 	res = ast_exists_extension(NULL, context, exten, 1, NULL);
-	if (!res)
+	if (!res) {
+		
 		return AST_DEVICE_INVALID;
-	else
+	} else
 		return AST_DEVICE_UNKNOWN;
 }
 
-- 
GitLab