aboutsummaryrefslogtreecommitdiffstats
path: root/pbx/pbx_ael.c
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-10-25 14:32:08 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-10-25 14:32:08 +0000
commit000e0986072e528276eb7ea9a37728b5b0e6be76 (patch)
treeb186c37b5085861c464a92debbf99dd8c2b71780 /pbx/pbx_ael.c
parentc3ad9c9ef53aa9d4297f7c0f009da3c33f50bebc (diff)
apparently developers are still not aware that they should be use ast_copy_string instead of strncpy... fix up many more users, and fix some bugs in the process
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@46200 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'pbx/pbx_ael.c')
-rw-r--r--pbx/pbx_ael.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/pbx/pbx_ael.c b/pbx/pbx_ael.c
index b68322726..4d32e456e 100644
--- a/pbx/pbx_ael.c
+++ b/pbx/pbx_ael.c
@@ -823,13 +823,13 @@ static void check_includes(pval *includes)
static void check_timerange(pval *p)
{
- char times[200];
+ char *times;
char *e;
int s1, s2;
int e1, e2;
+ times = ast_strdupa(p->u1.str);
- strncpy(times, p->u1.str, sizeof(times));
/* Star is all times */
if (ast_strlen_zero(times) || !strcmp(times, "*")) {
return;
@@ -891,13 +891,13 @@ static char *days[] =
/*! \brief get_dow: Get day of week */
static void check_dow(pval *DOW)
{
- char dow[200];
+ char *dow;
char *c;
/* The following line is coincidence, really! */
int s, e;
- strncpy(dow,DOW->u1.str,sizeof(dow));
-
+ dow = ast_strdupa(DOW->u1.str);
+
/* Check for all days */
if (ast_strlen_zero(dow) || !strcmp(dow, "*"))
return;
@@ -930,12 +930,13 @@ static void check_dow(pval *DOW)
static void check_day(pval *DAY)
{
- char day[200];
+ char *day;
char *c;
/* The following line is coincidence, really! */
int s, e;
- strncpy(day,DAY->u1.str,sizeof(day));
+ day = ast_strdupa(DAY->u1.str);
+
/* Check for all days */
if (ast_strlen_zero(day) || !strcmp(day, "*")) {
return;
@@ -992,12 +993,13 @@ static char *months[] =
static void check_month(pval *MON)
{
- char mon[200];
+ char *mon;
char *c;
/* The following line is coincidence, really! */
int s, e;
- strncpy(mon,MON->u1.str,sizeof(mon));
+ mon = ast_strdupa(MON->u1.str);
+
/* Check for all days */
if (ast_strlen_zero(mon) || !strcmp(mon, "*"))
return ;
@@ -1876,14 +1878,14 @@ int is_empty(char *arg)
int option_matches_j( struct argdesc *should, pval *is, struct argapp *app)
{
struct argchoice *ac;
- char opcop[400],*q,*p;
+ char *opcop,*q,*p;
switch (should->dtype) {
case ARGD_OPTIONSET:
if ( strstr(is->u1.str,"${") )
return 0; /* no checking anything if there's a var reference in there! */
- strncpy(opcop,is->u1.str,sizeof(opcop));
+ opcop = ast_strdupa(is->u1.str);
for (q=opcop;*q;q++) { /* erase the innards of X(innard) type arguments, so we don't get confused later */
if ( *q == '(' ) {
@@ -1938,7 +1940,7 @@ int option_matches_j( struct argdesc *should, pval *is, struct argapp *app)
int option_matches( struct argdesc *should, pval *is, struct argapp *app)
{
struct argchoice *ac;
- char opcop[400];
+ char *opcop;
switch (should->dtype) {
case ARGD_STRING:
@@ -1973,7 +1975,7 @@ int option_matches( struct argdesc *should, pval *is, struct argapp *app)
break;
case ARGD_OPTIONSET:
- strncpy(opcop,is->u1.str,sizeof(opcop));
+ opcop = ast_strdupa(is->u1.str);
for (ac=app->opts; ac; ac=ac->next) {
if (strlen(ac->name)>1 && strchr(ac->name,'(') == 0 && strcmp(ac->name,is->u1.str) == 0) /* multichar option, no parens, and a match? */
@@ -2065,7 +2067,7 @@ void check_switch_expr(pval *item, struct argapp *apps)
{
#ifdef AAL_ARGCHECK
/* get and clean the variable name */
- char buff1[1024],*p;
+ char *buff1, *p;
struct argapp *a,*a2;
struct appsetvar *v,*v2;
struct argchoice *c;
@@ -2075,7 +2077,8 @@ void check_switch_expr(pval *item, struct argapp *apps)
while (p && *p && (*p == ' ' || *p == '\t' || *p == '$' || *p == '{' ) )
p++;
- strncpy(buff1,p,sizeof(buff1));
+ buff1 = ast_strdupa(p);
+
while (strlen(buff1) > 0 && ( buff1[strlen(buff1)-1] == '}' || buff1[strlen(buff1)-1] == ' ' || buff1[strlen(buff1)-1] == '\t'))
buff1[strlen(buff1)-1] = 0;
/* buff1 now contains the variable name */