aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_unistim.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-21 16:24:17 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-21 16:24:17 +0000
commitc0db75dd30300be9335435859f644074b0bad3c3 (patch)
treeb7d08f9c513f85e1f18cd420f0554ac09f809d9f /channels/chan_unistim.c
parenta83ecf2fb3e33c6cc4542dbc44885fd2ab5df614 (diff)
Fix some code that was supposed to ensure that a buffer was terminated, but was
writing to the wrong byte. Also, remove some non-thread safe test code. (closes issue #11317) Reported by: IgorG Patches: unistim-2.patch uploaded by IgorG (license 20) - additional changes by me git-svn-id: http://svn.digium.com/svn/asterisk/trunk@89484 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_unistim.c')
-rw-r--r--channels/chan_unistim.c37
1 files changed, 7 insertions, 30 deletions
diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c
index 898026e48..093d03c31 100644
--- a/channels/chan_unistim.c
+++ b/channels/chan_unistim.c
@@ -223,8 +223,6 @@ static struct sockaddr_in addr_from;
static unsigned int size_addr_from = sizeof(addr_from);
/*! Receive buffer address */
static unsigned char *buff;
-/*! Used for test */
-static unsigned char flag = 0;
static int unistim_reloading = 0;
AST_MUTEX_DEFINE_STATIC(unistim_reload_lock);
AST_MUTEX_DEFINE_STATIC(usecnt_lock);
@@ -1383,22 +1381,6 @@ static void send_texttitle(struct unistimsession *pte, const char *text)
}
-static void SendTest(struct unistimsession *pte)
-{
- char text[TEXT_LENGTH_MAX];
- int i;
- if (unistimdebug)
- ast_verbose("Sending test packet %x\n", flag);
-
- sprintf(text, "first/last char0x%x/0x%x", flag, flag + TEXT_LENGTH_MAX - 1);
- send_text(TEXT_LINE1, TEXT_NORMAL, pte, text);
-
- for (i = 0; i < TEXT_LENGTH_MAX; i++) {
- text[i] = flag++;
- }
- text[i] = '\0';
- send_text(TEXT_LINE0, TEXT_NORMAL, pte, text);
-}
static void send_date_time(struct unistimsession *pte)
{
BUFFSEND;
@@ -3033,14 +3015,14 @@ static void show_entry_history(struct unistimsession *pte, FILE ** f)
fclose(*f);
return;
}
- line[TEXT_LENGTH_MAX + 1] = 0;
+ line[sizeof(line) - 1] = '\0';
send_text(TEXT_LINE0, TEXT_NORMAL, pte, line);
if (fread(line, TEXT_LENGTH_MAX, 1, *f) != 1) {
display_last_error("Can't read callerid entry");
fclose(*f);
return;
}
- line[TEXT_LENGTH_MAX + 1] = 0;
+ line[sizeof(line) - 1] = '\0';
ast_copy_string(pte->device->lst_cid, line, sizeof(pte->device->lst_cid));
send_text(TEXT_LINE1, TEXT_NORMAL, pte, line);
if (fread(line, TEXT_LENGTH_MAX, 1, *f) != 1) {
@@ -3048,7 +3030,7 @@ static void show_entry_history(struct unistimsession *pte, FILE ** f)
fclose(*f);
return;
}
- line[TEXT_LENGTH_MAX + 1] = 0;
+ line[sizeof(line) - 1] = '\0';
send_text(TEXT_LINE2, TEXT_NORMAL, pte, line);
fclose(*f);
@@ -3427,12 +3409,7 @@ static void process_request(int size, unsigned char *buf, struct unistimsession
if (unistimdebug)
ast_verbose("Key pressed : keycode = 0x%.2x - current state : %d\n", keycode,
pte->state);
- /* test key */
- if (keycode == KEY_COMPUTR) {
- SendTest(pte);
- return;
- }
- /* End of the test section */
+
switch (pte->state) {
case STATE_INIT:
if (unistimdebug)
@@ -4413,16 +4390,16 @@ static int unistim_sendtext(struct ast_channel *ast, const char *text)
return 0;
}
memcpy(tmp, text + TEXT_LENGTH_MAX, TEXT_LENGTH_MAX);
- tmp[TEXT_LENGTH_MAX + 1] = '\0';
+ tmp[sizeof(tmp) - 1] = '\0';
send_text(TEXT_LINE2, TEXT_NORMAL, pte, tmp);
return 0;
}
send_text(TEXT_LINE0, TEXT_NORMAL, pte, text);
memcpy(tmp, text + TEXT_LENGTH_MAX, TEXT_LENGTH_MAX);
- tmp[TEXT_LENGTH_MAX + 1] = '\0';
+ tmp[sizeof(tmp) - 1] = '\0';
send_text(TEXT_LINE1, TEXT_NORMAL, pte, tmp);
memcpy(tmp, text + TEXT_LENGTH_MAX * 2, TEXT_LENGTH_MAX);
- tmp[TEXT_LENGTH_MAX + 1] = '\0';
+ tmp[sizeof(tmp) - 1] = '\0';
send_text(TEXT_LINE2, TEXT_NORMAL, pte, tmp);
return 0;
}