]> git.pld-linux.org Git - packages/bacula.git/blame - bacula-2.4.4-reload.patch
- 3.0.0, NFY
[packages/bacula.git] / bacula-2.4.4-reload.patch
CommitLineData
0f57b063
AZ
1
2 This patch fixes bug #1211 crash during reload with bad dird.conf file.
3
4 Apply it to version 2.4.4 with:
5
6 cd <bacula-source>
7 patch -p0 <2.4.4-reload.patch
8 ./configure <your options>
9 make
10 ...
11 make install
12
13
14Index: src/lib/parse_conf.c
15===================================================================
16--- src/lib/parse_conf.c (revision 8393)
17+++ src/lib/parse_conf.c (working copy)
18@@ -284,6 +284,7 @@
19 }
20 if (token != T_EQUALS) {
21 scan_err1(lc, _("expected an =, got: %s"), lc->str);
22+ return;
23 }
24 break;
25 }
26@@ -304,6 +305,7 @@
27 Dmsg1(900, "store_msgs dest=%s:\n", NPRT(dest));
28 if (token != T_EQUALS) {
29 scan_err1(lc, _("expected an =, got: %s"), lc->str);
30+ return;
31 }
32 scan_types(lc, (MSGS *)(item->value), item->code, dest, NULL);
33 free_pool_memory(dest);
34@@ -312,7 +314,7 @@
35
36 default:
37 scan_err1(lc, _("Unknown item code: %d\n"), item->code);
38- break;
39+ return;
40 }
41 }
42 scan_to_eol(lc);
43@@ -352,7 +354,7 @@
44 }
45 if (!found) {
46 scan_err1(lc, _("message type: %s not found"), str);
47- /* NOT REACHED */
48+ return;
49 }
50
51 if (msg_type == M_MAX+1) { /* all? */
52@@ -384,12 +386,14 @@
53 lex_get_token(lc, T_NAME);
54 if (!is_name_valid(lc->str, &msg)) {
55 scan_err1(lc, "%s\n", msg);
56+ return;
57 }
58 free_pool_memory(msg);
59 /* Store the name both pass 1 and pass 2 */
60 if (*(item->value)) {
61 scan_err2(lc, _("Attempt to redefine name \"%s\" to \"%s\"."),
62 *(item->value), lc->str);
63+ return;
64 }
65 *(item->value) = bstrdup(lc->str);
66 scan_to_eol(lc);
67@@ -481,10 +485,12 @@
68 if (res == NULL) {
69 scan_err3(lc, _("Could not find config Resource %s referenced on line %d : %s\n"),
70 lc->str, lc->line_no, lc->line);
71+ return;
72 }
73 if (*(item->value)) {
74 scan_err3(lc, _("Attempt to redefine resource \"%s\" referenced on line %d : %s\n"),
75 item->name, lc->line_no, lc->line);
76+ return;
77 }
78 *(item->value) = (char *)res;
79 }
80@@ -520,6 +526,7 @@
81 if (i >= count) {
82 scan_err4(lc, _("Too many %s directives. Max. is %d. line %d: %s\n"),
83 lc->str, count, lc->line_no, lc->line);
84+ return;
85 }
86 list = New(alist(10, not_owned_by_alist));
87 }
88@@ -530,6 +537,7 @@
89 if (res == NULL) {
90 scan_err3(lc, _("Could not find config Resource \"%s\" referenced on line %d : %s\n"),
91 item->name, lc->line_no, lc->line);
92+ return;
93 }
94 Dmsg5(900, "Append %p to alist %p size=%d i=%d %s\n",
95 res, list, list->size(), i, item->name);
96@@ -592,6 +600,7 @@
97 if (res == NULL) {
98 scan_err3(lc, _("Missing config Resource \"%s\" referenced on line %d : %s\n"),
99 lc->str, lc->line_no, lc->line);
100+ return;
101 }
102 }
103 scan_to_eol(lc);
104@@ -655,12 +664,13 @@
105 }
106 if (!size_to_uint64(bsize, strlen(bsize), &uvalue)) {
107 scan_err1(lc, _("expected a size number, got: %s"), lc->str);
108+ return;
109 }
110 *(uint64_t *)(item->value) = uvalue;
111 break;
112 default:
113 scan_err1(lc, _("expected a size, got: %s"), lc->str);
114- break;
115+ return;
116 }
117 if (token != T_EOL) {
118 scan_to_eol(lc);
119@@ -697,12 +707,13 @@
120 }
121 if (!duration_to_utime(period, &utime)) {
122 scan_err1(lc, _("expected a time period, got: %s"), period);
123+ return;
124 }
125 *(utime_t *)(item->value) = utime;
126 break;
127 default:
128 scan_err1(lc, _("expected a time period, got: %s"), lc->str);
129- break;
130+ return;
131 }
132 if (token != T_EOL) {
133 scan_to_eol(lc);
134@@ -721,6 +732,7 @@
135 *(uint32_t *)(item->value) &= ~(item->code);
136 } else {
137 scan_err2(lc, _("Expect %s, got: %s"), "YES, NO, TRUE, or FALSE", lc->str); /* YES and NO must not be translated */
138+ return;
139 }
140 scan_to_eol(lc);
141 set_bit(index, res_all.hdr.item_present);
142@@ -736,6 +748,7 @@
143 *(bool *)(item->value) = false;
144 } else {
145 scan_err2(lc, _("Expect %s, got: %s"), "YES, NO, TRUE, or FALSE", lc->str); /* YES and NO must not be translated */
146+ return;
147 }
148 scan_to_eol(lc);
149 set_bit(index, res_all.hdr.item_present);
150@@ -761,6 +774,7 @@
151 }
152 if (i != 0) {
153 scan_err1(lc, _("Expected a Tape Label keyword, got: %s"), lc->str);
154+ return;
155 }
156 scan_to_eol(lc);
157 set_bit(index, res_all.hdr.item_present);
158@@ -910,6 +924,7 @@
159 Dmsg0(900, "T_EOB => define new resource\n");
160 if (res_all.hdr.name == NULL) {
161 scan_err0(lc, _("Name not specified for resource"));
162+ return 0;
163 }
164 save_resource(res_type, items, pass); /* save resource */
165 break;
This page took 0.138227 seconds and 4 git commands to generate.