You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
4.1 KiB
91 lines
4.1 KiB
diff --git a/lib/parse_ini.c b/lib/parse_ini.c |
|
index fb5601c0..450100ad 100644 |
|
--- a/lib/parse_ini.c |
|
+++ b/lib/parse_ini.c |
|
@@ -324,11 +324,13 @@ static int add_option(FILE *f, np_arg_list **optlst){ |
|
optnew->arg=malloc(cfg_len+1); |
|
/* 1-character params needs only one dash */ |
|
if(opt_len==1) { |
|
- strncpy(&optnew->arg[read_pos], "-", 1); |
|
- read_pos+=1; |
|
+ optnew->arg[read_pos]='-'; |
|
+ ++read_pos; |
|
} else { |
|
- strncpy(&optnew->arg[read_pos], "--", 2); |
|
- read_pos+=2; |
|
+ optnew->arg[read_pos]='-'; |
|
+ ++read_pos; |
|
+ optnew->arg[read_pos]='-'; |
|
+ ++read_pos; |
|
} |
|
strncpy(&optnew->arg[read_pos], optptr, opt_len); read_pos+=opt_len; |
|
if(value) { |
|
diff --git a/lib/utils_base.c b/lib/utils_base.c |
|
index 846d161e..cf443e71 100644 |
|
--- a/lib/utils_base.c |
|
+++ b/lib/utils_base.c |
|
@@ -332,6 +332,7 @@ int np_warn_if_not_root(void) { |
|
char *np_extract_value(const char *varlist, const char *name, char sep) { |
|
char *tmp=NULL, *value=NULL; |
|
int i; |
|
+ size_t varlistlen; |
|
|
|
while (1) { |
|
/* Strip any leading space */ |
|
@@ -356,10 +357,11 @@ char *np_extract_value(const char *varlist, const char *name, char sep) { |
|
value[tmp-varlist] = '\0'; |
|
} else { |
|
/* Value is delimited by a \0 */ |
|
- if (!strlen(varlist)) continue; |
|
- value = (char *)calloc(1, strlen(varlist) + 1); |
|
- strncpy(value, varlist, strlen(varlist)); |
|
- value[strlen(varlist)] = '\0'; |
|
+ varlistlen = strlen(varlist); |
|
+ if (!varlistlen) continue; |
|
+ value = (char *)calloc(1, varlistlen + 1); |
|
+ strncpy(value, varlist, varlistlen); |
|
+ value[varlistlen] = '\0'; |
|
} |
|
break; |
|
} |
|
diff --git a/plugins/check_disk.c b/plugins/check_disk.c |
|
index c813ad65..c882554d 100755 |
|
--- a/plugins/check_disk.c |
|
+++ b/plugins/check_disk.c |
|
@@ -488,11 +488,11 @@ main (int argc, char **argv) |
|
const char *free_pct_str = &human_disk_entry->free_pct_str[0]; |
|
const char *disk_result_str = state_text(human_disk_entry->disk_result); |
|
const char *avail_bytes_str = human_readable(human_disk_entry->avail_bytes, &human_buf[0], human_opts, 1, 1); |
|
- strncpy(&human_disk_entry->avail_bytes_str[0], avail_bytes_str, sizeof(human_disk_entry->avail_bytes_str)); |
|
+ strncpy(human_disk_entry->avail_bytes_str, avail_bytes_str, sizeof(human_disk_entry->avail_bytes_str - 1)); |
|
const char *total_bytes_str = human_readable(human_disk_entry->total_bytes, &human_buf[0], human_opts, 1, 1); |
|
- strncpy(&human_disk_entry->total_bytes_str[0], total_bytes_str, sizeof(human_disk_entry->total_bytes_str)); |
|
+ strncpy(human_disk_entry->total_bytes_str, total_bytes_str, sizeof(human_disk_entry->total_bytes_str - 1)); |
|
|
|
- strncpy(&human_disk_entry->disk_result_str[0], disk_result_str, sizeof(human_disk_entry->disk_result_str)); |
|
+ strncpy(human_disk_entry->disk_result_str, disk_result_str, sizeof(human_disk_entry->disk_result_str - 1)); |
|
if (human_column_widths.free_pct < strlen(free_pct_str)) human_column_widths.free_pct = strlen(free_pct_str); |
|
if (human_column_widths.avail_bytes < strlen(avail_bytes_str)) human_column_widths.avail_bytes = strlen(avail_bytes_str); |
|
if (human_column_widths.total_bytes < strlen(total_bytes_str)) human_column_widths.total_bytes = strlen(total_bytes_str); |
|
diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c |
|
index d5923a6a..43edd392 100644 |
|
--- a/plugins/check_smtp.c |
|
+++ b/plugins/check_smtp.c |
|
@@ -583,7 +583,7 @@ process_arguments (int argc, char **argv) |
|
_("Could not realloc() units [%d]\n"), ncommands); |
|
} |
|
commands[ncommands] = (char *) malloc (sizeof(char) * 255); |
|
- strncpy (commands[ncommands], optarg, 255); |
|
+ strncpy (commands[ncommands], optarg, 254); |
|
ncommands++; |
|
break; |
|
case 'R': /* server responses */ |
|
@@ -595,7 +595,7 @@ process_arguments (int argc, char **argv) |
|
_("Could not realloc() units [%d]\n"), nresponses); |
|
} |
|
responses[nresponses] = (char *) malloc (sizeof(char) * 255); |
|
- strncpy (responses[nresponses], optarg, 255); |
|
+ strncpy (responses[nresponses], optarg, 254); |
|
nresponses++; |
|
break; |
|
case 'c': /* critical time threshold */
|
|
|