~ubuntu-branches/ubuntu/quantal/bacula/quantal

« back to all changes in this revision

Viewing changes to debian/patches/fix_dump_resources_acl.patch

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2012-10-09 15:35:36 UTC
  • mfrom: (3.1.26 sid)
  • Revision ID: package-import@ubuntu.com-20121009153536-wvlgxuumstfebful
Tags: 5.2.6+dfsg-5ubuntu1
* Merge from Debian unstable (LP: #1064435).  Remaining changes:
  - d/control: Drop mt-st to suggests so that bacula goes back to main.
  - d/control: Make mysql the default, install bacula-[director|sd]-mysql
    instead of sqlite3 versions.
  - d/rules: Upgrade databases from 12->14 at 5.2.5-0ubuntu6.1 instead
    of 5.2.0 as this was missed in Ubuntu.
  - d/control: Add libncurses-dev to build-depends, as the console client
    insists on its presence to enable readline support, despite not using it.
  - d/rules: Disable fortify source since it was causing
    bacula-director to segfault.
  - d/control: Switch build-depends postgresql-server-dev-all ->
    postgresql-server-dev-9.1 as -all is not in main.
* Dropped changes, now in Debian:
  - d/control: Add liblzo2-dev to build-depends to enable LZO support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Description: Make dump_resource respect console ACL's
 
2
Bug-Debian: 687923
 
3
SA: CVE-2012-4430
 
4
Author: Kern Sibbald <kern@sibbald.com>
 
5
Last-Update: 2012-09-17
 
6
 
 
7
diff --git a/src/dird/dird_conf.c b/src/dird/dird_conf.c
 
8
index 7dcf591..2f2eb00 100644
 
9
--- a/src/dird/dird_conf.c
 
10
+++ b/src/dird/dird_conf.c
 
11
@@ -554,6 +554,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
 
12
    bool recurse = true;
 
13
    char ed1[100], ed2[100], ed3[100];
 
14
    DEVICE *dev;
 
15
+   UAContext *ua = (UAContext *)sock;
 
16
 
 
17
    if (res == NULL) {
 
18
       sendit(sock, _("No %s resource defined\n"), res_to_str(type));
 
19
@@ -599,6 +600,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
 
20
       break;
 
21
 
 
22
    case R_CLIENT:
 
23
+      if (!acl_access_ok(ua, Client_ACL, res->res_client.hdr.name)) {
 
24
+         break;
 
25
+      }
 
26
       sendit(sock, _("Client: name=%s address=%s FDport=%d MaxJobs=%u\n"),
 
27
          res->res_client.hdr.name, res->res_client.address, res->res_client.FDport,
 
28
          res->res_client.MaxConcurrentJobs);
 
29
@@ -626,6 +630,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
 
30
       break;
 
31
 
 
32
    case R_STORAGE:
 
33
+      if (!acl_access_ok(ua, Storage_ACL, res->res_store.hdr.name)) {
 
34
+         break;
 
35
+      }
 
36
       sendit(sock, _("Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
 
37
 "      DeviceName=%s MediaType=%s StorageId=%s\n"),
 
38
          res->res_store.hdr.name, res->res_store.address, res->res_store.SDport,
 
39
@@ -636,6 +643,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
 
40
       break;
 
41
 
 
42
    case R_CATALOG:
 
43
+      if (!acl_access_ok(ua, Catalog_ACL, res->res_cat.hdr.name)) {
 
44
+         break;
 
45
+      }
 
46
       sendit(sock, _("Catalog: name=%s address=%s DBport=%d db_name=%s\n"
 
47
 "      db_driver=%s db_user=%s MutliDBConn=%d\n"),
 
48
          res->res_cat.hdr.name, NPRT(res->res_cat.db_address),
 
49
@@ -646,6 +656,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
 
50
 
 
51
    case R_JOB:
 
52
    case R_JOBDEFS:
 
53
+      if (!acl_access_ok(ua, Job_ACL, res->res_job.hdr.name)) {
 
54
+         break;
 
55
+      }
 
56
       sendit(sock, _("%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"),
 
57
          type == R_JOB ? _("Job") : _("JobDefs"),
 
58
          res->res_job.hdr.name, res->res_job.JobType,
 
59
@@ -767,6 +780,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
 
60
    case R_FILESET:
 
61
    {
 
62
       int i, j, k;
 
63
+      if (!acl_access_ok(ua, FileSet_ACL, res->res_fs.hdr.name)) {
 
64
+         break;
 
65
+      }
 
66
       sendit(sock, _("FileSet: name=%s\n"), res->res_fs.hdr.name);
 
67
       for (i=0; i<res->res_fs.num_includes; i++) {
 
68
          INCEXE *incexe = res->res_fs.include_items[i];
 
69
@@ -854,6 +870,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
 
70
    }
 
71
 
 
72
    case R_SCHEDULE:
 
73
+      if (!acl_access_ok(ua, Schedule_ACL, res->res_sch.hdr.name)) {
 
74
+         break;
 
75
+      }
 
76
       if (res->res_sch.run) {
 
77
          int i;
 
78
          RUN *run = res->res_sch.run;
 
79
@@ -942,6 +961,9 @@ next_run:
 
80
       break;
 
81
 
 
82
    case R_POOL:
 
83
+      if (!acl_access_ok(ua, Pool_ACL, res->res_pool.hdr.name)) {
 
84
+         break;
 
85
+      }
 
86
       sendit(sock, _("Pool: name=%s PoolType=%s\n"), res->res_pool.hdr.name,
 
87
               res->res_pool.pool_type);
 
88
       sendit(sock, _("      use_cat=%d use_once=%d cat_files=%d\n"),
 
89
diff --git a/src/tools/Makefile.in b/bacula/src/tools/Makefile.in
 
90
index 0c3f305..5731140 100644
 
91
--- a/src/tools/Makefile.in
 
92
+++ b/src/tools/Makefile.in
 
93
@@ -29,12 +29,12 @@ dummy:
 
94
 
 
95
 GETTEXT_LIBS = @LIBINTL@
 
96
 
 
97
-FINDOBJS = testfind.o ../dird/dird_conf.o ../dird/inc_conf.o ../dird/run_conf.o
 
98
+FINDOBJS = testfind.o ../dird/dird_conf.o ../dird/inc_conf.o ../dird/ua_acl.o ../dird/run_conf.o
 
99
 
 
100
 # these are the objects that are changed by the .configure process
 
101
 EXTRAOBJS = @OBJLIST@
 
102
 
 
103
-DIRCONFOBJS = ../dird/dird_conf.o ../dird/run_conf.o ../dird/inc_conf.o
 
104
+DIRCONFOBJS = ../dird/dird_conf.o ../dird/ua_acl.o ../dird/run_conf.o ../dird/inc_conf.o
 
105
 
 
106
 NODIRTOOLS = bsmtp
 
107
 DIRTOOLS = bsmtp dbcheck drivetype fstype testfind testls bregex bwild bbatch bregtest bvfs_test ing_test
 
108
@@ -79,6 +79,9 @@ drivetype: Makefile drivetype.o ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) ../findlib/
 
109
 dird_conf.o: ../dird/dird_conf.c
 
110
        $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
111
 
 
112
+ua_acl.o: ../dird/ua_acl.c
 
113
+       $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
114
+
 
115
 run_conf.o: ../dird/run_conf.c
 
116
        $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
117