--- /dev/null
+ This patch fixes bug #958 A Verify catalog Job that has differences reports Verify OK.
+
+ Apply it to version 2.2.4 (possibly earlier versions with):
+
+ cd <bacula-source>
+ patch -p0 <2.2.4-verify.patch
+ ./configure (your options)
+ make
+ ...
+ make install
+
+Index: src/dird/verify.c
+===================================================================
+--- src/dird/verify.c (revision 5553)
++++ src/dird/verify.c (working copy)
+@@ -332,13 +332,10 @@
+ }
+
+ stat = wait_for_job_termination(jcr);
+- if (stat == JS_Terminated) {
+- verify_cleanup(jcr, stat);
+- return true;
+- }
++ verify_cleanup(jcr, stat);
++ return true;
+
+ bail_out:
+- verify_cleanup(jcr, JS_ErrorTerminated);
+ return false;
+ }
+
+@@ -421,7 +418,7 @@
+ jobstatus_to_ascii(jcr->FDJobStatus, fd_term_msg, sizeof(fd_term_msg));
+ if (jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG) {
+ jobstatus_to_ascii(jcr->SDJobStatus, sd_term_msg, sizeof(sd_term_msg));
+- Jmsg(jcr, msg_type, 0, _("Bacula %s %s (%s): %s\n"
++ Jmsg(jcr, msg_type, 0, _("Bacula %s %s (%s): %s\n"
+ " Build OS: %s %s %s\n"
+ " JobId: %d\n"
+ " Job: %s\n"
+@@ -456,7 +453,7 @@
+ sd_term_msg,
+ term_msg);
+ } else {
+- Jmsg(jcr, msg_type, 0, _("Bacula %s %s (%s): %s\n"
++ Jmsg(jcr, msg_type, 0, _("Bacula %s %s (%s): %s\n"
+ " Build: %s %s %s\n"
+ " JobId: %d\n"
+ " Job: %s\n"
+@@ -750,7 +747,9 @@
+ stat = JS_Differences;
+ }
+ free_pool_memory(fname);
+- set_jcr_job_status(jcr, stat);
++ if (!job_canceled(jcr)) {
++ jcr->JobStatus = stat;
++ }
+ return stat == JS_Terminated;
+ }
+
+Index: src/lib/jcr.c
+===================================================================
+--- src/lib/jcr.c (revision 5553)
++++ src/lib/jcr.c (working copy)
+@@ -614,9 +614,8 @@
+ /* Override more minor status */
+ jcr->JobStatus = JobStatus;
+ break;
+- default:
+- break;
+ }
++ break;
+ default:
+ jcr->JobStatus = JobStatus;
+ }