From 76be99c8011233c03e7573e97a7381363230cc02 Mon Sep 17 00:00:00 2001
From: Mathieu Parent <math.parent@gmail.com>
Date: Wed, 3 Mar 2010 07:48:42 +0000
Subject: [PATCH] Skinny: avoid stack overflow by lowering
 button_template_helper size

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16875 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/mod/endpoints/mod_skinny/skinny_protocol.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/mod/endpoints/mod_skinny/skinny_protocol.c b/src/mod/endpoints/mod_skinny/skinny_protocol.c
index 9ce4ad6ec7..10b7622d64 100644
--- a/src/mod/endpoints/mod_skinny/skinny_protocol.c
+++ b/src/mod/endpoints/mod_skinny/skinny_protocol.c
@@ -1445,7 +1445,7 @@ switch_status_t skinny_handle_port_message(listener_t *listener, skinny_message_
 
 struct button_template_helper {
 	skinny_message_t *message;
-	int count[0xffff+1];
+	int count[SKINNY_BUTTON_UNDEFINED+1];
 };
 
 int skinny_handle_button_template_request_callback(void *pArg, int argc, char **argv, char **columnNames)
@@ -1457,6 +1457,9 @@ int skinny_handle_button_template_request_callback(void *pArg, int argc, char **
 	uint32_t type = atoi(argv[2]);
 	int i;
 	
+	if(type > SKINNY_BUTTON_UNDEFINED) {
+		type = SKINNY_BUTTON_UNDEFINED;
+	}
 	/* fill buttons between previous one and current one */
 	for(i = message->data.button_template.button_count; i+1 < position; i++) {
 		message->data.button_template.btn[i].instance_number = ++helper->count[SKINNY_BUTTON_UNDEFINED];