diff -Naurp bacula-5.0.3/src/dird/dird_conf.c bacula-5.0.3.oden/src/dird/dird_conf.c --- bacula-5.0.3/src/dird/dird_conf.c 2010-08-05 16:29:51.000000000 +0200 +++ bacula-5.0.3.oden/src/dird/dird_conf.c 2012-10-09 15:03:46.203626632 +0200 @@ -552,6 +552,7 @@ void dump_resource(int type, RES *reshdr bool recurse = true; char ed1[100], ed2[100], ed3[100]; DEVICE *dev; + UAContext *ua = (UAContext *)sock; if (res == NULL) { sendit(sock, _("No %s resource defined\n"), res_to_str(type)); @@ -597,6 +598,9 @@ void dump_resource(int type, RES *reshdr break; case R_CLIENT: + if (!acl_access_ok(ua, Client_ACL, res->res_client.hdr.name)) { + break; + } sendit(sock, _("Client: name=%s address=%s FDport=%d MaxJobs=%u\n"), res->res_client.hdr.name, res->res_client.address, res->res_client.FDport, res->res_client.MaxConcurrentJobs); @@ -624,6 +628,9 @@ void dump_resource(int type, RES *reshdr break; case R_STORAGE: + if (!acl_access_ok(ua, Storage_ACL, res->res_store.hdr.name)) { + break; + } sendit(sock, _("Storage: name=%s address=%s SDport=%d MaxJobs=%u\n" " DeviceName=%s MediaType=%s StorageId=%s\n"), res->res_store.hdr.name, res->res_store.address, res->res_store.SDport, @@ -634,6 +641,9 @@ void dump_resource(int type, RES *reshdr break; case R_CATALOG: + if (!acl_access_ok(ua, Catalog_ACL, res->res_cat.hdr.name)) { + break; + } sendit(sock, _("Catalog: name=%s address=%s DBport=%d db_name=%s\n" " db_driver=%s db_user=%s MutliDBConn=%d\n"), res->res_cat.hdr.name, NPRT(res->res_cat.db_address), @@ -644,6 +654,9 @@ void dump_resource(int type, RES *reshdr case R_JOB: case R_JOBDEFS: + if (!acl_access_ok(ua, Job_ACL, res->res_job.hdr.name)) { + break; + } sendit(sock, _("%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"), type == R_JOB ? _("Job") : _("JobDefs"), res->res_job.hdr.name, res->res_job.JobType, @@ -762,6 +775,9 @@ void dump_resource(int type, RES *reshdr case R_FILESET: { int i, j, k; + if (!acl_access_ok(ua, FileSet_ACL, res->res_fs.hdr.name)) { + break; + } sendit(sock, _("FileSet: name=%s\n"), res->res_fs.hdr.name); for (i=0; i<res->res_fs.num_includes; i++) { INCEXE *incexe = res->res_fs.include_items[i]; @@ -849,6 +865,9 @@ void dump_resource(int type, RES *reshdr } case R_SCHEDULE: + if (!acl_access_ok(ua, Schedule_ACL, res->res_sch.hdr.name)) { + break; + } if (res->res_sch.run) { int i; RUN *run = res->res_sch.run; @@ -937,6 +956,9 @@ next_run: break; case R_POOL: + if (!acl_access_ok(ua, Pool_ACL, res->res_pool.hdr.name)) { + break; + } sendit(sock, _("Pool: name=%s PoolType=%s\n"), res->res_pool.hdr.name, res->res_pool.pool_type); sendit(sock, _(" use_cat=%d use_once=%d cat_files=%d\n"), diff -Naurp bacula-5.0.3/src/tools/Makefile.in bacula-5.0.3.oden/src/tools/Makefile.in --- bacula-5.0.3/src/tools/Makefile.in 2012-10-09 15:04:25.990628856 +0200 +++ bacula-5.0.3.oden/src/tools/Makefile.in 2012-10-09 15:03:24.508625509 +0200 @@ -27,12 +27,12 @@ dummy: GETTEXT_LIBS = @LIBINTL@ -FINDOBJS = testfind.o ../dird/dird_conf.o ../dird/inc_conf.o ../dird/run_conf.o +FINDOBJS = testfind.o ../dird/dird_conf.o ../dird/inc_conf.o ../dird/ua_acl.o ../dird/run_conf.o # these are the objects that are changed by the .configure process EXTRAOBJS = @OBJLIST@ -DIRCONFOBJS = ../dird/dird_conf.o ../dird/run_conf.o ../dird/inc_conf.o +DIRCONFOBJS = ../dird/dird_conf.o ../dird/ua_acl.o ../dird/run_conf.o ../dird/inc_conf.o NODIRTOOLS = bsmtp DIRTOOLS = bsmtp dbcheck drivetype fstype testfind testls bregex bwild bbatch bregtest bvfs_test ing_test @@ -77,6 +77,9 @@ drivetype: Makefile drivetype.o ../lib/l dird_conf.o: ../dird/dird_conf.c $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< +ua_acl.o: ../dird/ua_acl.c + $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $< + run_conf.o: ../dird/run_conf.c $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<