[monitoring-plugins] check_apt: localize variables
Lorenz Kästle
git at monitoring-plugins.org
Fri Nov 8 23:00:12 CET 2024
Module: monitoring-plugins
Branch: master
Commit: 75ff5b3b51a76081196f41c4b428dc3db50f2664
Author: RincewindsHat <12514511+RincewindsHat at users.noreply.github.com>
Committer: Lorenz Kästle <12514511+RincewindsHat at users.noreply.github.com>
Date: Sat Oct 26 23:18:26 2024 +0200
URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=75ff5b3
check_apt: localize variables
---
plugins/check_apt.c | 65 +++++++++++++++++++++++------------------------------
1 file changed, 28 insertions(+), 37 deletions(-)
diff --git a/plugins/check_apt.c b/plugins/check_apt.c
index eb08a06..c2c693e 100644
--- a/plugins/check_apt.c
+++ b/plugins/check_apt.c
@@ -94,12 +94,6 @@ static int stderr_warning = 0; /* if a cmd issued output on stderr */
static int exec_warning = 0; /* if a cmd exited non-zero */
int main(int argc, char **argv) {
- int result = STATE_UNKNOWN;
- int packages_available = 0;
- int sec_count = 0;
- char **packages_list = NULL;
- char **secpackages_list = NULL;
-
/* Parse extra opts if any */
argv = np_extra_opts(&argc, argv, progname);
@@ -115,11 +109,16 @@ int main(int argc, char **argv) {
/* handle timeouts gracefully... */
alarm(timeout_interval);
+ int result = STATE_UNKNOWN;
/* if they want to run apt-get update first... */
if (do_update) {
result = run_update();
}
+ int packages_available = 0;
+ int sec_count = 0;
+ char **packages_list = NULL;
+ char **secpackages_list = NULL;
/* apt-get upgrade */
result = max_state(result, run_upgrade(&packages_available, &sec_count, &packages_list, &secpackages_list));
@@ -156,8 +155,6 @@ int main(int argc, char **argv) {
/* process command-line arguments */
int process_arguments(int argc, char **argv) {
- int c;
-
static struct option longopts[] = {{"version", no_argument, 0, 'V'},
{"help", no_argument, 0, 'h'},
{"verbose", no_argument, 0, 'v'},
@@ -175,14 +172,14 @@ int process_arguments(int argc, char **argv) {
{"packages-warning", required_argument, 0, 'w'},
{0, 0, 0, 0}};
- while (1) {
- c = getopt_long(argc, argv, "hVvt:u::U::d::nli:e:c:ow:", longopts, NULL);
+ while (true) {
+ int option_char = getopt_long(argc, argv, "hVvt:u::U::d::nli:e:c:ow:", longopts, NULL);
- if (c == -1 || c == EOF || c == 1) {
+ if (option_char == -1 || option_char == EOF || option_char == 1) {
break;
}
- switch (c) {
+ switch (option_char) {
case 'h':
print_help();
exit(STATE_UNKNOWN);
@@ -257,18 +254,7 @@ int process_arguments(int argc, char **argv) {
/* run an apt-get upgrade */
int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkglist) {
- int result = STATE_UNKNOWN;
- int regres = 0;
- int pc = 0;
- int spc = 0;
- struct output chld_out;
- struct output chld_err;
- regex_t ireg;
regex_t ereg;
- regex_t sreg;
- char *cmdline = NULL;
- char rerrbuf[64];
-
/* initialize ereg as it is possible it is printed while uninitialized */
memset(&ereg, '\0', sizeof(ereg.buffer));
@@ -276,6 +262,9 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkg
return STATE_OK;
}
+ int regres = 0;
+ regex_t ireg;
+ char rerrbuf[64];
/* compile the regexps */
if (do_include != NULL) {
regres = regcomp(&ireg, do_include, REG_EXTENDED);
@@ -293,6 +282,7 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkg
}
}
+ regex_t sreg;
const char *crit_ptr = (do_critical != NULL) ? do_critical : SECURITY_RE;
regres = regcomp(&sreg, crit_ptr, REG_EXTENDED);
if (regres != 0) {
@@ -300,6 +290,10 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkg
die(STATE_UNKNOWN, _("%s: Error compiling regexp: %s"), progname, rerrbuf);
}
+ int result = STATE_UNKNOWN;
+ struct output chld_out;
+ struct output chld_err;
+ char *cmdline = NULL;
cmdline = construct_cmdline(upgrade, upgrade_opts);
if (input_filename != NULL) {
/* read input from a file for testing */
@@ -336,6 +330,8 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkg
* we may need to switch to the --print-uris output format,
* in which case the logic here will slightly change.
*/
+ int pc = 0;
+ int spc = 0;
for (size_t i = 0; i < chld_out.lines; i++) {
if (verbose) {
printf("%s\n", chld_out.line[i]);
@@ -389,12 +385,12 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkg
/* run an apt-get update (needs root) */
int run_update(void) {
int result = STATE_UNKNOWN;
- struct output chld_out;
- struct output chld_err;
char *cmdline;
-
/* run the update */
cmdline = construct_cmdline(NO_UPGRADE, update_opts);
+
+ struct output chld_out;
+ struct output chld_err;
result = np_runcmd(cmdline, &chld_out, &chld_err, 0);
/* apt-get update changes exit status if it can't fetch packages.
* since we were explicitly asked to do so, this is treated as
@@ -426,20 +422,16 @@ int run_update(void) {
}
char *pkg_name(char *line) {
- char *start = NULL;
- char *space = NULL;
- char *pkg = NULL;
- int len = 0;
+ char *start = line + strlen(PKGINST_PREFIX);
- start = line + strlen(PKGINST_PREFIX);
- len = strlen(start);
+ int len = strlen(start);
- space = index(start, ' ');
+ char *space = index(start, ' ');
if (space != NULL) {
len = space - start;
}
- pkg = malloc(sizeof(char) * (len + 1));
+ char *pkg = malloc(sizeof(char) * (len + 1));
if (!pkg) {
die(STATE_UNKNOWN, "malloc failed!\n");
}
@@ -475,10 +467,8 @@ char *add_to_regexp(char *expr, const char *next) {
}
char *construct_cmdline(upgrade_type u, const char *opts) {
- int len = 0;
const char *opts_ptr = NULL;
const char *aptcmd = NULL;
- char *cmd = NULL;
switch (u) {
case UPGRADE:
@@ -507,11 +497,12 @@ char *construct_cmdline(upgrade_type u, const char *opts) {
break;
}
+ int len = 0;
len += strlen(PATH_TO_APTGET) + 1; /* "/usr/bin/apt-get " */
len += strlen(opts_ptr) + 1; /* "opts " */
len += strlen(aptcmd) + 1; /* "upgrade\0" */
- cmd = (char *)malloc(sizeof(char) * len);
+ char *cmd = (char *)malloc(sizeof(char) * len);
if (cmd == NULL) {
die(STATE_UNKNOWN, "malloc failed");
}
More information about the Commits
mailing list