mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 12:16:00 +00:00
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: https://origsvn.digium.com/svn/asterisk/branches/1.4@46200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -129,7 +129,7 @@ static void dump_string(char *output, int maxlen, void *value, int len)
|
||||
maxlen--;
|
||||
if (maxlen > len)
|
||||
maxlen = len;
|
||||
strncpy(output,value, maxlen);
|
||||
strncpy(output, value, maxlen);
|
||||
output[maxlen] = '\0';
|
||||
}
|
||||
|
||||
|
@@ -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 */
|
||||
|
@@ -97,7 +97,7 @@ static struct ast_variable *realtime_switch_common(const char *table, const char
|
||||
case MODE_MATCH:
|
||||
default:
|
||||
ematch = "exten";
|
||||
strncpy(rexten, exten, sizeof(rexten) - 1);
|
||||
ast_copy_string(rexten, exten, sizeof(rexten));
|
||||
}
|
||||
var = ast_load_realtime(table, ematch, rexten, "context", context, "priority", pri, NULL);
|
||||
if (!var) {
|
||||
@@ -183,7 +183,7 @@ static int realtime_exec(struct ast_channel *chan, const char *context, const ch
|
||||
|
||||
for (v = var; v ; v = v->next) {
|
||||
if (!strcasecmp(v->name, "app"))
|
||||
strncpy(app, v->value, sizeof(app) -1 );
|
||||
ast_copy_string(app, v->value, sizeof(app));
|
||||
else if (!strcasecmp(v->name, "appdata"))
|
||||
tmp = ast_strdupa(v->value);
|
||||
}
|
||||
|
@@ -166,11 +166,11 @@ static int apply_outgoing(struct outgoing *o, char *fn, FILE *f)
|
||||
printf("'%s' is '%s' at line %d\n", buf, c, lineno);
|
||||
#endif
|
||||
if (!strcasecmp(buf, "channel")) {
|
||||
strncpy(o->tech, c, sizeof(o->tech) - 1);
|
||||
ast_copy_string(o->tech, c, sizeof(o->tech));
|
||||
if ((c2 = strchr(o->tech, '/'))) {
|
||||
*c2 = '\0';
|
||||
c2++;
|
||||
strncpy(o->dest, c2, sizeof(o->dest) - 1);
|
||||
ast_copy_string(o->dest, c2, sizeof(o->dest));
|
||||
} else {
|
||||
ast_log(LOG_NOTICE, "Channel should be in form Tech/Dest at line %d of %s\n", lineno, fn);
|
||||
o->tech[0] = '\0';
|
||||
@@ -178,18 +178,18 @@ static int apply_outgoing(struct outgoing *o, char *fn, FILE *f)
|
||||
} else if (!strcasecmp(buf, "callerid")) {
|
||||
ast_callerid_split(c, o->cid_name, sizeof(o->cid_name), o->cid_num, sizeof(o->cid_num));
|
||||
} else if (!strcasecmp(buf, "application")) {
|
||||
strncpy(o->app, c, sizeof(o->app) - 1);
|
||||
ast_copy_string(o->app, c, sizeof(o->app));
|
||||
} else if (!strcasecmp(buf, "data")) {
|
||||
strncpy(o->data, c, sizeof(o->data) - 1);
|
||||
ast_copy_string(o->data, c, sizeof(o->data));
|
||||
} else if (!strcasecmp(buf, "maxretries")) {
|
||||
if (sscanf(c, "%d", &o->maxretries) != 1) {
|
||||
ast_log(LOG_WARNING, "Invalid max retries at line %d of %s\n", lineno, fn);
|
||||
o->maxretries = 0;
|
||||
}
|
||||
} else if (!strcasecmp(buf, "context")) {
|
||||
strncpy(o->context, c, sizeof(o->context) - 1);
|
||||
ast_copy_string(o->context, c, sizeof(o->context));
|
||||
} else if (!strcasecmp(buf, "extension")) {
|
||||
strncpy(o->exten, c, sizeof(o->exten) - 1);
|
||||
ast_copy_string(o->exten, c, sizeof(o->exten));
|
||||
} else if (!strcasecmp(buf, "priority")) {
|
||||
if ((sscanf(c, "%d", &o->priority) != 1) || (o->priority < 1)) {
|
||||
ast_log(LOG_WARNING, "Invalid priority at line %d of %s\n", lineno, fn);
|
||||
@@ -240,7 +240,7 @@ static int apply_outgoing(struct outgoing *o, char *fn, FILE *f)
|
||||
ast_log(LOG_NOTICE, "Syntax error at line %d of %s\n", lineno, fn);
|
||||
}
|
||||
}
|
||||
strncpy(o->fn, fn, sizeof(o->fn) - 1);
|
||||
ast_copy_string(o->fn, fn, sizeof(o->fn));
|
||||
if (ast_strlen_zero(o->tech) || ast_strlen_zero(o->dest) || (ast_strlen_zero(o->app) && ast_strlen_zero(o->exten))) {
|
||||
ast_log(LOG_WARNING, "At least one of app or extension must be specified, along with tech and dest in file %s\n", fn);
|
||||
return -1;
|
||||
|
Reference in New Issue
Block a user