[sword-devel] THE BIGGEST BUG ;-)

Troy A. Griffitts sword-devel@crosswire.org
Mon, 08 Nov 1999 07:47:34 +0000

> I discovered a REALLY BIG BUG! It's a big memory leak! The bug occurs in every
> SWORD 1.4x version.

Congratulations!  You win!


> Open BibleTime, set the lower search bound in the searchscope dialog to
> something like "Matthew"  and type in the upper bound _nothing_. (no text).
> Start search for a word like "Jesus".
> Wait 10 minutes and your computer will be DEAD!
> SWORD searches until infinity and will eat every mem avaible

	The problem is that I don't check for upper bounds being less than
lower bounds.  When "" or something similar is sent to upper bounds ""
is parsed to "Gen 1:1" then the last chapter and verse are applied sense
none were specified and it is 'upper' bounds, and I'd bet a shiny
dreckel that you end up with something like 'Genesis 50:26' as your
upper bounds.  However, I still cannot compile bibletime (I'm pretty
sure I'm in a group of all RH6.1 users who will probably have trouble
also).  I could write a simple test program to do the same thing, but
before I do, you might try putting a simple check in
...sword/src/keys/versekey.cpp: VerseKey::UpperBound(...):
something like:

if (*upperBound < *lowerBound)	//* so we don't check the pointer addr :)
	*upperBound = *lowerBound;

Or in the contructor that takes min and max, if 1 of these is null or ""
or whatever you are passing if nothing is entered, don't call the
[Upper|Lower]Bound method.

	Let me know if you don't get it fixed, or don't have time, and I will
look into the fix.  If you get it working, send me that patch! (diff -u
versekey.cpp.orig versekey.cpp is fine, you don't have to diff the whole
tree as I'm pretty sure the fix will be in this file.)

	Thanks Joachim!,