]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/ua_status.c
Fix buffer overrun in FD
[bacula/bacula] / bacula / src / dird / ua_status.c
index 6cf7e3e8ac6ea3443758ab00f28d89eba9d5f43d..e4993aadc33869c84c3081eafce95c32baa2c505 100644 (file)
@@ -38,6 +38,8 @@
 #include "bacula.h"
 #include "dird.h"
 
+extern void *start_heap;
+
 static void list_scheduled_jobs(UAContext *ua);
 static void list_running_jobs(UAContext *ua);
 static void list_terminated_jobs(UAContext *ua);
@@ -253,10 +255,10 @@ static void do_all_status(UAContext *ua)
 
 }
 
-static void do_director_status(UAContext *ua)
+void list_dir_status_header(UAContext *ua)
 {
    char dt[MAX_TIME_LENGTH];
-   char b1[35], b2[35], b3[35], b4[35];
+   char b1[35], b2[35], b3[35], b4[35], b5[35];
 
    ua->send_msg(_("%s Version: %s (%s) %s %s %s\n"), my_name, VERSION, BDATE,
             HOST_OS, DISTNAME, DISTVER);
@@ -268,11 +270,17 @@ static void do_director_status(UAContext *ua)
       ua->send_msg(_("Daemon started %s, %d Jobs run since started.\n"),
         dt, num_jobs_run);
    }
-   ua->send_msg(_(" Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
-            edit_uint64_with_commas(sm_bytes, b1),
-            edit_uint64_with_commas(sm_max_bytes, b2),
-            edit_uint64_with_commas(sm_buffers, b3),
-            edit_uint64_with_commas(sm_max_buffers, b4));
+   ua->send_msg(_(" Heap: heap=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
+            edit_uint64_with_commas((char *)sbrk(0)-(char *)start_heap, b1),
+            edit_uint64_with_commas(sm_bytes, b2),
+            edit_uint64_with_commas(sm_max_bytes, b3),
+            edit_uint64_with_commas(sm_buffers, b4),
+            edit_uint64_with_commas(sm_max_buffers, b5));
+}
+
+static void do_director_status(UAContext *ua)
+{
+   list_dir_status_header(ua);
 
    /*
     * List scheduled Jobs