The crash I describe below is caused by an off-by-one error in accurate.c...
In accurate_cmd, a blank chksum is not included in the length passed to accurate_add_file, but in accurate_add_file, the blank chksum takes up one byte and so will trigger the overrun detection if the buffer happens to be the last in the "big buf", which is the case in my crash. This crash would occur only when: . chksum is blank . accurate entry is last in the "big buf" . accurate entry size == "big buf" remaining and so an overrun overruns "big buf" The following patch fixes the bug for me: diff --git a/bacula/src/filed/accurate.c b/bacula/src/filed/accurate.c index 3a043a3..a8446c9 100644 --- a/bacula/src/filed/accurate.c +++ b/bacula/src/filed/accurate.c @@ -223,8 +223,13 @@ static bool accurate_add_file(JCR *jcr, uint32_t len, item->lstat = item->fname+strlen(item->fname)+1; strcpy(item->lstat, lstat); - item->chksum = item->lstat+strlen(item->lstat)+1; - strcpy(item->chksum, chksum); + if (!strlen(chksum)) { + /* re-use the null at the end of lstat */ + item->chksum = item->lstat+strlen(item->lstat); + } else { + item->chksum = item->lstat+strlen(item->lstat)+1; + strcpy(item->chksum, chksum); + } item->delta_seq = delta; James > -----Original Message----- > From: James Harper > Sent: Monday, 5 December 2011 3:08 PM > To: James Harper; bacula-devel@lists.sourceforge.net > Subject: RE: [Bacula-devel] crash in 5.2.2 > > > > > I'm getting a consistent crash on one Windows 2008 R2 server: > > > > 05-Dec 12:50 bitdc1-fd: ABORTING due to ERROR in > > /home/kern/bacula/k/bacula/src/lib/smartall.c:216 > > Overrun buffer: len=9830441 addr=40d0068 allocated: > > /home/kern/bacula/k/bacula/src/lib/htable.c:72 called from > > /home/kern/bacula/k/bacula/src/lib/htable.c:91 > > > > This is happening at the end of the accurate 'seen' code I think: > > bitdc1-fd: /home/kern/bacula/k/bacula/src/lib/htable.c:79-0 malloc > buf=4070068 size=9830400 rem=9830376 > bitdc1-fd: /home/kern/bacula/k/bacula/src/lib/htable.c:112-0 Created new > big buffer of 9830400 bytes > bitdc1-fd: /home/kern/bacula/k/bacula/src/filed/accurate.c:234-0 add > fname=<C:/Windows/winsxs/amd64_microsoft-windows-mediaplayer- > core_31bf3856ad364e35_6.1.7600.16385_none_675eb4c668cac03c/WMPPlay > er-ppdlic.xrm-ms> lstat=A A IH/ B A A A wz A A BKW+Ue BKW+Ue BKW+Ue A > A M delta_seq=0 chksum= > bitdc1-fd: /home/kern/bacula/k/bacula/src/filed/accurate.c:234-0 add > fname=<C:/Windows/winsxs/amd64_microsoft-windows-mediaplayer- > core_31bf3856ad364e35_6.1.7600.16385_none_675eb4c668cac03c/wmpshar > e.exe> lstat=A A IH/ B A A A ZIA A A BKW9AA BKW+Hs BKW9AA A A M > delta_seq=0 chksum= > bitdc1-fd: /home/kern/bacula/k/bacula/src/filed/accurate.c:234-0 add > fname=<C:/Windows/winsxs/amd64_microsoft-windows-mediaplayer- > core_31bf3856ad364e35_6.1.7600.16385_none_675eb4c668cac03c/> lstat=A > A EH/ B A A A A A A BKXBkT BKXBkT BKXBkR A A M delta_seq=0 chksum= > bitdc1-fd: /home/kern/bacula/k/bacula/src/filed/accurate.c:234-0 add > fname=<C:/Windows/winsxs/amd64_microsoft-windows-mediaplayer- > core_31bf3856ad364e35_6.1.7600.16415_none_67aa66206891f9cc/avtranspo > rt.xml> lstat=A A IH/ B A A A E2C A A BKW9BW BKMB1Y BKW9BW A A M > delta_seq=0 chksum= > bitdc1-fd: /home/kern/bacula/k/bacula/src/filed/accurate.c:234-0 add > fname=<C:/Windows/winsxs/amd64_microsoft-windows-mediaplayer- > core_31bf3856ad364e35_6.1.7600.16415_none_67aa66206891f9cc/connectio > nmanager_dmr.xml> lstat=A A IH/ B A A A BT/ A A BKW9BW BKMB1Y > BKW9BW A A M delta_seq=0 chksum= > bitdc1-fd: /home/kern/bacula/k/bacula/src/filed/accurate.c:234-0 add > fname=<C:/Windows/winsxs/amd64_microsoft-windows-mediaplayer- > core_31bf3856ad364e35_6.1.7600.16415_none_67aa66206891f9cc/DMR_120. > jpg> lstat=A A IH/ B A A A uj A A BKW9BW BKMB1W BKW9BW A A M > delta_seq=0 chksum= ... > bitdc1-fd: /home/kern/bacula/k/bacula/src/filed/accurate.c:159-0 deleted > fname=C:/Windows/SoftwareDistribution/Download/f0c6519c2159e158a5a6 > 809e0034014a/cbshandler/state seen=0 > bitdc1-fd: /home/kern/bacula/k/bacula/src/filed/accurate.c:159-0 deleted > fname=C:/ProgramData/Microsoft/Windows/WER/ReportQueue/Critical_6.1 > .7601_6d9bc88e5a3ea1e6a04e40309422f28fc0f47026_070c770d/Report.wer > seen=0 > bitdc1-fd: /home/kern/bacula/k/bacula/src/filed/accurate.c:159-0 deleted > fname=C:/Users/administrator.SBSSWG/AppData/Local/Microsoft/Windows > /Temporary Internet Files/Content.IE5/V3S0WCGX/french-flag[1].jpg > seen=0 > bitdc1-fd: /home/kern/bacula/k/bacula/src/lib/htable.c:90-0 free malloc > buf=49e0068 > bitdc1-fd: /home/kern/bacula/k/bacula/src/lib/htable.c:90-0 free malloc > buf=4070068 <crash here> > > Am I reading correctly that Bacula allocated a buffer of 9830400 bytes in > length but then went 41 bytes over the end? > > James ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ Bacula-devel mailing list Bacula-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-devel