]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Fix #8167 About BAT tool crashing the dir
authorNorbert Bizet <norbert.bizet@baculasystems.com>
Tue, 21 Sep 2021 09:22:49 +0000 (05:22 -0400)
committerEric Bollengier <eric@baculasystems.com>
Thu, 24 Mar 2022 08:03:04 +0000 (09:03 +0100)
Reintroduced missing 'if(job)' case for get_job_storage, so that it
works for both 'run' and 'job' arguments provided.
Removed unneded get_job_storage() call from get_storage().

bacula/src/dird/job.c
bacula/src/dird/ua_dotcmds.c
bacula/src/dird/ua_run.c

index 6e9391e014bb891d08fbb4ffd5affb4da8f40d5c..246f77d7b6516781039784302180eb59dd082ab4 100644 (file)
@@ -1605,7 +1605,9 @@ void dird_free_jcr(JCR *jcr)
 }
 
 /*
- * Override storage from run parameters if set.
+ *  The Job storage definition must be either in the Job record
+ *  or in the Pool record.  The Pool record overrides the Job
+ *  record.
  */
 void get_job_storage(USTORE *store, JOB *job, RUN *run)
 {
@@ -1619,6 +1621,17 @@ void get_job_storage(USTORE *store, JOB *job, RUN *run)
       pm_strcpy(store->store_source, _("Run storage override"));
       return;
    }
+
+   if (job) {
+      if (job->pool->storage) {
+         store->store = (STORE *)job->pool->storage->first();
+         pm_strcpy(store->store_source, _("Pool resource"));
+         return;
+      } else {
+         store->store = (STORE *)job->storage->first();
+         pm_strcpy(store->store_source, _("Job resource"));
+      }
+   }
 }
 
 /* Init storage manager with specified storage group policy */
index 411c03e153f2b9396319d34fe51dce9b62440b6c..a449d5327e5e6df2cded8018afc42248c2930795 100644 (file)
@@ -2576,7 +2576,7 @@ static bool defaultscmd(UAContext *ua, const char *cmd)
          ua->send_msg("messages=%s", job->messages->name());
          ua->send_msg("client=%s", job->client?job->client->name():_("*None*"));
          get_job_storage(&store, job, NULL);
-         ua->send_msg("storage=%s", store.store->name());
+         ua->send_msg("storage=%s", store.store ? store.store->name() :_("*None*"));
          ua->send_msg("where=%s", job->RestoreWhere?job->RestoreWhere:"");
          ua->send_msg("level=%s", level_to_str(edl, sizeof(edl),job->JobLevel));
          ua->send_msg("type=%s", job_type_to_str(job->JobType));
index 2d12367414b6210a464f1a3f6a803f8f6040231f..f07b4f4435184c88e910f19cb0fef51454f40abe 100644 (file)
@@ -556,9 +556,6 @@ static bool get_storage(UAContext *ua, run_ctx &rc)
       }
    }
 
-   if (!rc.store->store) {
-      get_job_storage(rc.store, rc.job, NULL);      /* use default */
-   }
    if (rc.store->store && !acl_access_ok(ua, Storage_ACL, rc.store->store->name())) {
       ua->error_msg(_("No authorization. Storage \"%s\".\n"),
                rc.store->store->name());