Check line 41 of sapphire.cpp. Make sure that rsum is actually an unsigned byte and that it is handling integer overflow correctly. This is where I had a bug in the equivalent Java routine.

This code relies upon integer overflow happening correctly. It is safer to mask before using it for an index.

DM Smith wrote:
Martin,
You have the flow of events incorrect. Compression is last on building. Decompression is first on reading.

It could be that it is experiencing the same bug I encountered in JSword. I'll check (as it is a one line change)

Martin Gruner wrote:
Hi,

when testing the new GerHfa2002 module, I discovered a major bug in sword. I tried to open the locked module without having the key yet. In some chapters garbage text shows up which clearly belongs not to the module, but to other parts of the address space of BibleTime.

IIRC, in Sword, module encryption works like this

raw text -> compression -> encryption
raw text -> encryption -> compression
encryption does not change the size of the file.
This is supposed to strengthen the encryption. But if you don't have the encryption key, then the decryption can't work:

decryption -> decompression -> raw text
decompression -> decryption -> raw text

Actually, if anyone cares to know, there is no difference between encryption and decryption.

Since decryption does not work, decompression tries to uncompress the encrypted text (that's what I guess here). This sometimes leads to buffer overflows (not deterministic). For example, I had this text in Joshua 1 in BibleTime:

1 2 3 b 4 5 6 o 7 8 r-Verlag" and "Friedrich Reinhardt Verlag", we are able to distribute (for missionary purposes) the text of the LOSUNG ("Watchwords" -selected Old and New Testamtent texts-) as freeware. I am very glad about this opportunity, and with all my heart I give thanks to our great God. I am also grateful to all those sustaining this missionary opportunity 9 in prayer. Their part is crucial.\par\parThis free version on disk displays only the Old and New Testament verses. The publisher "H�nssler-Verlag" in Germany offers a disk version 10 for sale (in German), which displays additional text from the printed booklet.\par\parEach user and distributor of this disk must adhere to the license agreement below:\par\par You may distribute the content of this disk or program package only in unmodified form. You must not remove, modify, or pass along any files separately. \par\par Via BBS you m 12 ay distribute individual program packets, such as: \par\par winlos99.exe \par doslos99.exe \par os2los99.zip \par atalsg99.zip \par etc.. \par\par The same restriction applies here, as well: \par\par Distribution of the LOSUNG ("Watchwords") texts without their respective display programs is not permitted. You must not alter the content of the texts.\par\par The programs themselves are copyrighted (German "Urheberrecht") for the benefit of their progr 13 am authors. See program documentation for details.\par\parAdditionally, the following applies: \par\par the LOSUNG ("Watchwords") may be used exclusively by the name "LOSUNG" with the freeware programs provided, and may only be distributed free of charge. \par advertisement, distribution for profit, and distribution through commercial companies, is prohibited. \par you must not use or incorporate the freeware LOSUNG ("Watchwords") texts in any other software program (e.g. an or 15 ganizer program), unless the sole function of the program is to display the LOSUNG ("Watchwords") text on the screen. \par\parImportant Copyright Information regarding the English Bible Texts: \par\par The Text of the "AUTHORIZED VERSION" (popularly known as the "King Jam 16 es Version") is in the Public Domain.\par\par The NEW INTERNATIONAL VERSION (often abbreviated as "NIV")\par "Scripture t 17 aken from the HOLY BIBLE, NEW INTERNATIONAL VERSION (R)\par Copyright (C) 1973, 1978, 1984\par 18 by International Bible Society.\par Used by permission of Zondervan Publishing House.\par All rights reserved."\par\par T

This obviously comes from other parts of BibleTime's address space. Try "mod2imp GerHfa2002" and you might see places where this happens. The GerHfaLex2002 module crashes BibleTime on my system, perhaps because the decompressor tries to access memory that is outside of BibleTime's address space.
The console always spits out warnings like:

no room in outbuffer to during decompression. see zipcomp.cpp
no room in outbuffer to during decompression. see zipcomp.cpp

I don't know how the decompression algorithms and Sword's design in this regard work. Perhaps somebody wants to investigate? This is both a stability and a security problem.

Martin
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page



_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page



_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page

Reply via email to