]> granicus.if.org Git - cronie/commitdiff
Memory leaks should be fixed. Instead of log is used slog function.
authorMarcela Mašláňová <mmaslano@redhat.com>
Mon, 13 Jul 2009 14:33:03 +0000 (16:33 +0200)
committerMarcela Mašláňová <mmaslano@redhat.com>
Mon, 13 Jul 2009 14:33:03 +0000 (16:33 +0200)
anacron/global.h
anacron/gregor.c
anacron/log.c
anacron/matchrx.c
anacron/runjob.c

index 9d97af9da49bd09d0450772148d11486089550b4..38a526b4d1fc8687c014dc1fde7a37986d4358d7 100644 (file)
@@ -105,18 +105,25 @@ extern int complaints;
 /* main.c */
 int xopen(int fd, const char *file_name, int flags);
 void xclose(int fd);
-pid_t xfork();
+pid_t xfork(void);
+
+#ifdef __GNUC__
+#define PRINTF_FORMAT(n, m) \
+   __attribute__ ((format (printf, n, m)))
+#else
+#define PRINTF_FORMAT(n, m)
+#endif
 
 /* log.c */
-void explain(const char *fmt, ...);
-void explain_e(const char *fmt, ...);
-void complain(const char *fmt, ...);
-void complain_e(const char *fmt, ...);
-void die(const char *fmt, ...);
-void die_e(const char *fmt, ...);
-void xdebug(const char *fmt, ...);
-void xdebug_e(const char *fmt, ...);
-void xcloselog();
+void explain(const char *fmt, ...)PRINTF_FORMAT(1,2);
+void explain_e(const char *fmt, ...)PRINTF_FORMAT(1,2);
+void complain(const char *fmt, ...)PRINTF_FORMAT(1,2);
+void complain_e(const char *fmt, ...)PRINTF_FORMAT(1,2);
+void die(const char *fmt, ...)PRINTF_FORMAT(1,2);
+void die_e(const char *fmt, ...)PRINTF_FORMAT(1,2);
+void xdebug(const char *fmt, ...)PRINTF_FORMAT(1,2);
+void xdebug_e(const char *fmt, ...)PRINTF_FORMAT(1,2);
+void xcloselog(void);
 
 #ifdef DEBUG
 #define Debug(args) xdebug args
@@ -128,7 +135,7 @@ void xcloselog();
 
 /* readtab.c */
 void read_tab(int cwd);
-void arrange_jobs();
+void arrange_jobs(void);
 
 /* lock.c */
 int consider_job(job_rec *jr);
index d54ba8dafb6d06788104ee46c796b60822c9a904..91e41737c423f059515b3fc519670e5dbdd9ebc8 100644 (file)
@@ -27,7 +27,7 @@
 #include <time.h>
 #include "gregor.h"
 
-const static int
+static const int
 days_in_month[] = {
     31,  /* Jan */
     28,  /* Feb (non-leap) */
index 5b430e69264eff99b956016ff0db6355ea571a43..709420cfc583143341bf8d10859dfad4729432a2 100644 (file)
@@ -83,7 +83,7 @@ make_msg(const char *fmt, va_list args)
 }
 
 static void
-log(int priority, const char *fmt, va_list args)
+slog(int priority, const char *fmt, va_list args)
 /* Log a message, described by "fmt" and "args", with the specified
  * "priority". */
 {
@@ -101,7 +101,7 @@ log(int priority, const char *fmt, va_list args)
 
 static void
 log_e(int priority, const char *fmt, va_list args)
-/* Same as log(), but also appends an error description corresponding
+/* Same as slog(), but also appends an error description corresponding
  * to "errno". */
 {
     int saved_errno;
@@ -127,7 +127,7 @@ explain(const char *fmt, ...)
     va_list args;
 
     va_start(args, fmt);
-    log(EXPLAIN_LEVEL, fmt, args);
+    slog(EXPLAIN_LEVEL, fmt, args);
     va_end(args);
 }
 
@@ -149,7 +149,7 @@ complain(const char *fmt, ...)
     va_list args;
 
     va_start(args, fmt);
-    log(COMPLAIN_LEVEL, fmt, args);
+    slog(COMPLAIN_LEVEL, fmt, args);
     va_end(args);
 
     complaints += 1;
@@ -175,7 +175,7 @@ die(const char *fmt, ...)
     va_list args;
 
     va_start(args, fmt);
-    log(COMPLAIN_LEVEL, fmt, args);
+    slog(COMPLAIN_LEVEL, fmt, args);
     va_end(args);
     if (getpid() == primary_pid) complain("Aborted");
 
@@ -207,7 +207,7 @@ xdebug(const char *fmt, ...)
     va_list args;
 
     va_start(args, fmt);
-    log(DEBUG_LEVEL, fmt, args);
+    slog(DEBUG_LEVEL, fmt, args);
     va_end(args);
 }
 
index a3e940c73b17ec4e1c6d1b26234c8496dbe92a64..905694e0c0647ae2409cbeafb44c38ae035d023b 100644 (file)
@@ -26,6 +26,7 @@
 #include <regex.h>
 #include <stdarg.h>
 #include <stdlib.h>
+#include <string.h>
 #include "matchrx.h"
 
 int
@@ -49,11 +50,20 @@ match_rx(const char *rx, char *string, int n_sub,  /* char **substrings */...)
        sub_offsets = malloc(sizeof(regmatch_t) * (n_sub + 1));
        memset(sub_offsets, 0, sizeof(regmatch_t) * (n_sub + 1));
 
-       if (regcomp(&crx, rx, REG_EXTENDED)) return - 1;
+       if (regcomp(&crx, rx, REG_EXTENDED)) {
+           free(sub_offsets);
+           return - 1;
+       }
        r = regexec(&crx, string, n_sub + 1, sub_offsets, 0);
-       if (r != 0 && r != REG_NOMATCH) return - 1;
+       if (r != 0 && r != REG_NOMATCH) {
+          free(sub_offsets);
+          return - 1;
+       }
        regfree(&crx);
-       if (r == REG_NOMATCH) return 0;
+       if (r == REG_NOMATCH) {
+           free(sub_offsets);
+           return 0;
+       }
 
        va_start(va, n_sub);
        n = 1;
@@ -62,7 +72,10 @@ match_rx(const char *rx, char *string, int n_sub,  /* char **substrings */...)
                substring = va_arg(va, char**);
                if (substring != NULL)
                {
-                       if (sub_offsets[n].rm_so == -1) return - 1;
+                       if (sub_offsets[n].rm_so == -1) {
+                           free(sub_offsets);
+                           return - 1;
+                       }
                        *substring = string + sub_offsets[n].rm_so;
                        *(string + sub_offsets[n].rm_eo) = 0;
                }
index f045d008ab0d661a40574dab56be563e7390d600..13a0e878cfd5bdf0ae79b1737eb47213ca19d5ec 100644 (file)
@@ -64,8 +64,8 @@ temp_file(job_rec *jr)
     if (fdin == -1) die_e("Can't open temporary file for reading");
     if (unlink(name)) die_e("Can't unlink temporary file");
     free(name);
-    fcntl(fdout, F_SETFD, 1);    /* set close-on-exec flag */
-    fcntl(fdin, F_SETFD, 1);    /* set close-on-exec flag */
+    fcntl(fdout, F_SETFD, FD_CLOEXEC);    /* set close-on-exec flag */
+    fcntl(fdin, F_SETFD, FD_CLOEXEC);    /* set close-on-exec flag */
 
     jr->input_fd = fdin;
     jr->output_fd = fdout;
@@ -175,8 +175,6 @@ launch_mailer(job_rec *jr)
     pid = xfork();
     if (pid == 0)
     {
-       long fdflags;
-
        /* child */
        in_background = 1;
        /* set stdin to the job's output */