Search
j0ke.net Open Build Service
>
Projects
>
server:backup
>
bacula
> 2.4.4-reload.patch
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File 2.4.4-reload.patch of Package bacula
This patch fixes bug #1211 crash during reload with bad dird.conf file. Apply it to version 2.4.4 with: cd <bacula-source> patch -p0 <2.4.4-reload.patch ./configure <your options> make ... make install Index: src/lib/parse_conf.c =================================================================== --- src/lib/parse_conf.c (revision 8393) +++ src/lib/parse_conf.c (working copy) @@ -284,6 +284,7 @@ } if (token != T_EQUALS) { scan_err1(lc, _("expected an =, got: %s"), lc->str); + return; } break; } @@ -304,6 +305,7 @@ Dmsg1(900, "store_msgs dest=%s:\n", NPRT(dest)); if (token != T_EQUALS) { scan_err1(lc, _("expected an =, got: %s"), lc->str); + return; } scan_types(lc, (MSGS *)(item->value), item->code, dest, NULL); free_pool_memory(dest); @@ -312,7 +314,7 @@ default: scan_err1(lc, _("Unknown item code: %d\n"), item->code); - break; + return; } } scan_to_eol(lc); @@ -352,7 +354,7 @@ } if (!found) { scan_err1(lc, _("message type: %s not found"), str); - /* NOT REACHED */ + return; } if (msg_type == M_MAX+1) { /* all? */ @@ -384,12 +386,14 @@ lex_get_token(lc, T_NAME); if (!is_name_valid(lc->str, &msg)) { scan_err1(lc, "%s\n", msg); + return; } free_pool_memory(msg); /* Store the name both pass 1 and pass 2 */ if (*(item->value)) { scan_err2(lc, _("Attempt to redefine name \"%s\" to \"%s\"."), *(item->value), lc->str); + return; } *(item->value) = bstrdup(lc->str); scan_to_eol(lc); @@ -481,10 +485,12 @@ if (res == NULL) { scan_err3(lc, _("Could not find config Resource %s referenced on line %d : %s\n"), lc->str, lc->line_no, lc->line); + return; } if (*(item->value)) { scan_err3(lc, _("Attempt to redefine resource \"%s\" referenced on line %d : %s\n"), item->name, lc->line_no, lc->line); + return; } *(item->value) = (char *)res; } @@ -520,6 +526,7 @@ if (i >= count) { scan_err4(lc, _("Too many %s directives. Max. is %d. line %d: %s\n"), lc->str, count, lc->line_no, lc->line); + return; } list = New(alist(10, not_owned_by_alist)); } @@ -530,6 +537,7 @@ if (res == NULL) { scan_err3(lc, _("Could not find config Resource \"%s\" referenced on line %d : %s\n"), item->name, lc->line_no, lc->line); + return; } Dmsg5(900, "Append %p to alist %p size=%d i=%d %s\n", res, list, list->size(), i, item->name); @@ -592,6 +600,7 @@ if (res == NULL) { scan_err3(lc, _("Missing config Resource \"%s\" referenced on line %d : %s\n"), lc->str, lc->line_no, lc->line); + return; } } scan_to_eol(lc); @@ -655,12 +664,13 @@ } if (!size_to_uint64(bsize, strlen(bsize), &uvalue)) { scan_err1(lc, _("expected a size number, got: %s"), lc->str); + return; } *(uint64_t *)(item->value) = uvalue; break; default: scan_err1(lc, _("expected a size, got: %s"), lc->str); - break; + return; } if (token != T_EOL) { scan_to_eol(lc); @@ -697,12 +707,13 @@ } if (!duration_to_utime(period, &utime)) { scan_err1(lc, _("expected a time period, got: %s"), period); + return; } *(utime_t *)(item->value) = utime; break; default: scan_err1(lc, _("expected a time period, got: %s"), lc->str); - break; + return; } if (token != T_EOL) { scan_to_eol(lc); @@ -721,6 +732,7 @@ *(uint32_t *)(item->value) &= ~(item->code); } else { scan_err2(lc, _("Expect %s, got: %s"), "YES, NO, TRUE, or FALSE", lc->str); /* YES and NO must not be translated */ + return; } scan_to_eol(lc); set_bit(index, res_all.hdr.item_present); @@ -736,6 +748,7 @@ *(bool *)(item->value) = false; } else { scan_err2(lc, _("Expect %s, got: %s"), "YES, NO, TRUE, or FALSE", lc->str); /* YES and NO must not be translated */ + return; } scan_to_eol(lc); set_bit(index, res_all.hdr.item_present); @@ -761,6 +774,7 @@ } if (i != 0) { scan_err1(lc, _("Expected a Tape Label keyword, got: %s"), lc->str); + return; } scan_to_eol(lc); set_bit(index, res_all.hdr.item_present); @@ -910,6 +924,7 @@ Dmsg0(900, "T_EOB => define new resource\n"); if (res_all.hdr.name == NULL) { scan_err0(lc, _("Name not specified for resource")); + return 0; } save_resource(res_type, items, pass); /* save resource */ break;