case 'C': /* color */
t++;
if (sscanf(t, "%d;%d%n", &fgcolor, &bgcolor, &i) == 2) {
- strncat(p, term_color_code(term_code, fgcolor, bgcolor, sizeof(term_code)),sizeof(prompt) - strlen(prompt));
+ strncat(p, term_color_code(term_code, fgcolor, bgcolor, sizeof(term_code)),sizeof(prompt) - strlen(prompt) - 1);
t += i - 1;
} else if (sscanf(t, "%d%n", &fgcolor, &i) == 1) {
- strncat(p, term_color_code(term_code, fgcolor, 0, sizeof(term_code)),sizeof(prompt) - strlen(prompt));
+ strncat(p, term_color_code(term_code, fgcolor, 0, sizeof(term_code)),sizeof(prompt) - strlen(prompt) - 1);
t += i - 1;
}
break;
case 'h': /* hostname */
if (!gethostname(hostname, sizeof(hostname) - 1)) {
- strncat(p, hostname, sizeof(prompt) - strlen(prompt));
+ strncat(p, hostname, sizeof(prompt) - strlen(prompt) - 1);
} else {
- strncat(p, "localhost", sizeof(prompt) - strlen(prompt));
+ strncat(p, "localhost", sizeof(prompt) - strlen(prompt) - 1);
}
break;
case 'H': /* short hostname */
break;
}
}
- strncat(p, hostname, sizeof(prompt) - strlen(prompt));
+ strncat(p, hostname, sizeof(prompt) - strlen(prompt) - 1);
} else {
- strncat(p, "localhost", sizeof(prompt) - strlen(prompt));
+ strncat(p, "localhost", sizeof(prompt) - strlen(prompt) - 1);
}
break;
#ifdef linux
break;
case '#': /* process console or remote? */
if (! option_remote) {
- strncat(p, "#", sizeof(prompt) - strlen(prompt));
+ strncat(p, "#", sizeof(prompt) - strlen(prompt) - 1);
} else {
- strncat(p, ">", sizeof(prompt) - strlen(prompt));
+ strncat(p, ">", sizeof(prompt) - strlen(prompt) - 1);
}
break;
case '%': /* literal % */
- strncat(p, "%", sizeof(prompt) - strlen(prompt));
+ strncat(p, "%", sizeof(prompt) - strlen(prompt) - 1);
break;
case '\0': /* % is last character - prevent bug */
t--;
strncpy((char *)ast_config_AST_SPOOL_DIR,v->value,sizeof(ast_config_AST_SPOOL_DIR)-1);
} else if (!strcasecmp(v->name, "astvarlibdir")) {
strncpy((char *)ast_config_AST_VAR_DIR,v->value,sizeof(ast_config_AST_VAR_DIR)-1);
- snprintf((char *)ast_config_AST_DB,sizeof(ast_config_AST_DB)-1,"%s/%s",v->value,"astdb");
+ snprintf((char *)ast_config_AST_DB,sizeof(ast_config_AST_DB),"%s/%s",v->value,"astdb");
} else if (!strcasecmp(v->name, "astlogdir")) {
strncpy((char *)ast_config_AST_LOG_DIR,v->value,sizeof(ast_config_AST_LOG_DIR)-1);
} else if (!strcasecmp(v->name, "astagidir")) {
strncpy((char *)ast_config_AST_AGI_DIR,v->value,sizeof(ast_config_AST_AGI_DIR)-1);
} else if (!strcasecmp(v->name, "astrundir")) {
- snprintf((char *)ast_config_AST_PID,sizeof(ast_config_AST_PID)-1,"%s/%s",v->value,"asterisk.pid");
- snprintf((char *)ast_config_AST_SOCKET,sizeof(ast_config_AST_SOCKET)-1,"%s/%s",v->value,"asterisk.ctl");
+ snprintf((char *)ast_config_AST_PID,sizeof(ast_config_AST_PID),"%s/%s",v->value,"asterisk.pid");
+ snprintf((char *)ast_config_AST_SOCKET,sizeof(ast_config_AST_SOCKET),"%s/%s",v->value,"asterisk.ctl");
strncpy((char *)ast_config_AST_RUN_DIR,v->value,sizeof(ast_config_AST_RUN_DIR)-1);
} else if (!strcasecmp(v->name, "astmoddir")) {
strncpy((char *)ast_config_AST_MODULE_DIR,v->value,sizeof(ast_config_AST_MODULE_DIR)-1);
xarg = optarg;
break;
case 'C':
- strncpy((char *)ast_config_AST_CONFIG_FILE,optarg,sizeof(ast_config_AST_CONFIG_FILE));
+ strncpy((char *)ast_config_AST_CONFIG_FILE,optarg,sizeof(ast_config_AST_CONFIG_FILE) - 1);
option_overrideconfig++;
break;
case 'i':
if (!cat)
return NULL;
memset(cat, 0, sizeof(struct ast_category));
- strncpy(cat->name, category, sizeof(cat->name));
+ strncpy(cat->name, category, sizeof(cat->name) - 1);
if (config->root) {
/* Put us at the end */
pcat = config->root;
{
FILE *f;
char fn[256];
- char date[256];
+ char date[256]="";
time_t t;
struct ast_variable *var;
struct ast_category *cat;
snprintf(fn, sizeof(fn), "%s/%s", AST_CONFIG_DIR, configfile);
}
time(&t);
- strncpy(date, ctime(&t), sizeof(date));
+ strncpy(date, ctime(&t), sizeof(date) - 1);
if ((f = fopen(fn, "w"))) {
if ((option_verbose > 1) && !option_debug)
ast_verbose( VERBOSE_PREFIX_2 "Saving '%s': ", fn);
category = malloc(sizeof(struct ast_category));
if (category) {
memset(category,0,sizeof(struct ast_category));
- strncpy(category->name,name,sizeof(category->name));
+ strncpy(category->name,name,sizeof(category->name) - 1);
}
return category;
}
if (strcmp(v->name,config_conf_file) && strcmp(v->name,"asterisk.conf")) {
if (!(test = get_ast_cust_config_keyword(v->name))) {
ast_log(LOG_NOTICE,"Binding: %s to %s\n",v->name,v->value);
- strncpy(ptr->keywords[ptr->keycount],v->name,sizeof(ptr->keywords[ptr->keycount]));
+ strncpy(ptr->keywords[ptr->keycount],v->name,sizeof(ptr->keywords[ptr->keycount]) - 1);
+ ptr->keywords[ptr->keycount][sizeof(ptr->keywords[ptr->keycount])-1] = '\0';
ptr->keycount++;
}
} else {