]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/dird.c
Fix buffer overrun in FD
[bacula/bacula] / bacula / src / dird / dird.c
index e1c1bd1c5c9d67d77413891671f0ec7ba9e384c6..2f055701533a72befcbe4a878eab4c65da31980e 100644 (file)
@@ -69,6 +69,7 @@ DIRRES *director;                     /* Director resource */
 int FDConnectTimeout;
 int SDConnectTimeout;
 char *configfile = NULL;
+void *start_heap;
 
 /* Globals Imported */
 extern int r_first, r_last;           /* first and last resources */
@@ -132,6 +133,7 @@ int main (int argc, char *argv[])
    textdomain("bacula");
 
    init_stack_dump();
+   start_heap = sbrk(0);
    my_name_is(argc, argv, "bacula-dir");
    init_msg(NULL, NULL);              /* initialize message handler */
    init_reload();
@@ -725,7 +727,7 @@ static bool check_resources()
       for (i=0; job_items[i].name; i++) {
          if (job_items[i].flags & ITEM_REQUIRED) {
                if (!bit_is_set(i, job->hdr.item_present)) {
-                  Jmsg(NULL, M_FATAL, 0, _("\"%s\" directive in Job \"%s\" resource is required, but not found.\n"),
+                  Jmsg(NULL, M_ERROR_TERM, 0, _("\"%s\" directive in Job \"%s\" resource is required, but not found.\n"),
                     job_items[i].name, job->name());
                   OK = false;
                 }
@@ -866,6 +868,7 @@ static bool check_catalog()
          if (db) {
             Jmsg(NULL, M_FATAL, 0, _("%s"), db_strerror(db));
             Pmsg1(000, "%s", db_strerror(db));
+            db_close_database(NULL, db);
          }
          OK = false;
          continue;