ports/sysutils/monitord/files/patch-monitord.c
Gleb Popov ac0196bd10 sysutils/monitord: Remove erroneous patch hunk.
It is sizeof(array) that was intended here.

Reported by:	Peter TKATCHENKO <peter@flytrace.com>
2021-07-17 22:15:39 +03:00

132 lines
5.1 KiB
C

--- monitord.c.orig 2003-01-16 21:39:44 UTC
+++ monitord.c
@@ -30,6 +30,8 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
#include "monitord.h"
#include "config.h"
+static int HUP;
+
int main (int argc, char *arga[]) {
int i, num, interval;
@@ -69,7 +71,7 @@ int main (int argc, char *arga[]) {
// init the *file[];
for ( i = 0; i < _MAXLINE; i++ ) {
file[i] = (char *) malloc ( (size_t) sizeof(char) * _BUFSIZE );
- bzero ( file[i], sizeof (file[i]) );
+ bzero ( file[i], sizeof (*file[i]) );
}
// file = (char **) calloc (1000, (size_t) sizeof(char) * _BUFSIZE );
@@ -85,8 +87,8 @@ int main (int argc, char *arga[]) {
setsid ();
break;
}
- default:
- exit(1);
+ default: // The parent exits
+ exit(0);
}
/* Read the configuration file, saving it in *file[] and return the number of lines
@@ -119,7 +121,7 @@ int read_conf ( char ***file, char *filename ) {
char *buf;
buf = (char *) malloc ( (size_t) _BUFSIZE ); // init & zero the buffer
- bzero (buf, sizeof (buf) );
+ bzero (buf, sizeof (*buf) );
line_count = 0;
@@ -146,7 +148,7 @@ int read_conf ( char ***file, char *filename ) {
strncpy ( (char *) file[line_count], buf, _BUFSIZE );
// realloc ( & file[1], (size_t) sizeof(char) * _BUFSIZE * (line_count + 1) );
// zero out the buffer so we don't have it hold old garbage
- bzero (buf, sizeof (buf));
+ bzero (buf, sizeof (*buf));
line_count++; // Advance the counter
@@ -179,7 +181,7 @@ int loop ( char **file, char *filename, int max_proc,
char value[_BUFSIZE / 6]; /* generic value from config file */
char email[_BUFSIZE / 6]; /* admin's email */
char eserver[_BUFSIZE / 6]; /* admin's email server */
- char delay[max_proc]; /* array for tracking delay times for processes */
+ signed char delay[max_proc]; /* array for tracking delay times for processes */
char cmdline[_BUFSIZE]; /* entire process line from config file */
char tmppath[_BUFSIZE]; /* temporary copy of script_path */
@@ -197,11 +199,13 @@ int loop ( char **file, char *filename, int max_proc,
buf = (char *) malloc ( (size_t) _BUFSIZE ); // init the all purpose buffer
buf2 = (char *) malloc ( (size_t) _BUFSIZE ); // init another all purpose buffer
token = (char *) malloc ( (size_t) _BUFSIZE ); // init the token buffer
- bzero (buf, sizeof (buf) );
- bzero (buf2, sizeof (buf) );
- bzero (token, sizeof (token) );
+ bzero (buf, sizeof (*buf) );
+ bzero (buf2, sizeof (*buf) );
+ bzero (token, sizeof (*token) );
FOUND = 0;
+
+ memset(delay, 0, max_proc*sizeof(char));
// Main loop
while(1) {
@@ -355,18 +359,18 @@ int loop ( char **file, char *filename, int max_proc,
// printf("Couldn't open %s\n", buf);
}
// Set the FOUND flag if the process we're checking for is found
- if (!strncmp (buf, proc, sizeof(buf))) FOUND = TRUE;
+ if (!strncmp (buf, proc, MIN(strlen(buf),strlen(proc)))) FOUND = TRUE;
}
closedir (dirp); // Close the /proc directory
// If the process wasn't found in the process listing then start it
- if (!FOUND && options.isauto && !delay[i]) {
+ if (!FOUND && options.isauto && delay[i] < interval) {
/* Email admin that the service has died, if the "mail"
option has been set in the options */
if (options.alert) {
- bzero (buf, sizeof(buf));
- bzero (buf2, sizeof(buf2));
+ bzero (buf, sizeof(*buf));
+ bzero (buf2, sizeof(*buf2));
sprintf (buf, "[%s] Service \"%s\" has died\n", getdate(), proc);
sprintf (buf2, "(monitord) SYSTEM ALERT, \"%s\" has died\n", proc);
mail (email, eserver, buf2, buf);
@@ -405,7 +409,7 @@ int loop ( char **file, char *filename, int max_proc,
/* Email the admin that the service has been
restarted if "mail" option is set */
if (options.alert) {
- bzero (buf, sizeof(buf));
+ bzero (buf, sizeof(*buf));
sprintf (buf, "[%s] restarted \"%s\" using \"%s %s\"\n", getdate(), proc, script_path, param);
sprintf (buf2, "(monitord) \"%s\" restarted\n", proc);
mail (email, eserver, buf2, buf);
@@ -418,7 +422,7 @@ int loop ( char **file, char *filename, int max_proc,
been able to be restarted if "mail" option
is set */
if (options.alert) {
- bzero (buf, sizeof(buf));
+ bzero (buf, sizeof(*buf));
sprintf (buf, "[%s] unable to restart \"%s\"\n", getdate(), proc);
sprintf (buf2, "(monitord) SYSTEM ALERT: \"%s\" unable to restart\n", proc);
mail (email, eserver, buf2, buf);
@@ -454,13 +458,13 @@ char *getdate () {
struct timeval *tp;
struct timezone *tzp;
- const time_t *time;
+ time_t *time;
char *buf;
buf = (char *) malloc ( (size_t) _BUFSIZE ); // init the time buffer
tp = (struct timeval *) malloc ( (size_t) sizeof (struct timeval) ); // init the time buffer
tzp = (struct timezone *) malloc ( (size_t) sizeof (struct timezone) ); // init the timezone buffer
- time = (const time_t *) malloc ( (size_t) sizeof (time_t) ); // init the timezone buffer
+ time = (time_t *) malloc ( (size_t) sizeof (time_t) ); // init the timezone buffer
/* Get time of day in seconds since Epoch */
gettimeofday (tp, tzp);