From: Eric Bollengier Date: Tue, 8 Jul 2014 12:22:37 +0000 (+0200) Subject: Fix some errors reported by valgrind. May fix the problem with bsmtp command. X-Git-Tag: Release-7.0.5~18 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=8c899771fd201ca678a2d775e679bfa71e1496d8;p=bacula%2Fbacula Fix some errors reported by valgrind. May fix the problem with bsmtp command. Conditional jump or move depends on uninitialised value(s) at 0x5045B75: makedir(JCR*, char*, unsigned int, int*) [clone .constprop.3] (mkpath.c:146) Syscall param unlink(pathname) points to unaddressable byte(s) at 0x74BAF67: unlink (in /usr/lib/libc-2.19.so) by 0x430BB9: restore_cleanup(JCR*, int) (restore.c:591) --- diff --git a/bacula/src/dird/restore.c b/bacula/src/dird/restore.c index 99bffc6706..b61c729714 100644 --- a/bacula/src/dird/restore.c +++ b/bacula/src/dird/restore.c @@ -569,6 +569,15 @@ void restore_cleanup(JCR *jcr, int TermCode) Dmsg0(20, "In restore_cleanup\n"); update_job_end(jcr, TermCode); + if (jcr->component_fd) { + fclose(jcr->component_fd); + jcr->component_fd = NULL; + } + if (jcr->component_fname && *jcr->component_fname) { + unlink(jcr->component_fname); + } + free_and_null_pool_memory(jcr->component_fname); + if (jcr->unlink_bsr && jcr->RestoreBootstrap) { unlink(jcr->RestoreBootstrap); jcr->unlink_bsr = false; diff --git a/bacula/src/dird/ua_restore.c b/bacula/src/dird/ua_restore.c index ebe8d008f2..1dc1a40460 100644 --- a/bacula/src/dird/ua_restore.c +++ b/bacula/src/dird/ua_restore.c @@ -75,11 +75,23 @@ int restore_cmd(UAContext *ua, const char *cmd) memset(&rx, 0, sizeof(rx)); rx.path = get_pool_memory(PM_FNAME); + rx.path[0] = 0; + rx.fname = get_pool_memory(PM_FNAME); + rx.fname[0] = 0; + rx.JobIds = get_pool_memory(PM_FNAME); rx.JobIds[0] = 0; + + rx.component_fname = get_pool_memory(PM_FNAME); + rx.component_fname[0] = 0; + rx.BaseJobIds = get_pool_memory(PM_FNAME); + rx.BaseJobIds[0] = 0; + rx.query = get_pool_memory(PM_FNAME); + rx.query[0] = 0; + rx.bsr = new_bsr(); rx.hardlinks_in_mem = true;