Richard Levitte - VMS Whacker <[EMAIL PROTECTED]> writes:
> OK, the bug is found. This is the code that causes the problem, do
> you think you can spot it? A hint: the integer part will *always* be
> truncated to the three least significant digits...
>
> /* convert integer part */
> do {
> iconvert[iplace++] =
> (caps ? "0123456789ABCDEF"
> : "0123456789abcdef")[intpart % 10];
> intpart = (intpart / 10);
> } while (intpart && (iplace < (int)sizeof(iplace)));
sizeof(iplace) should have been sizeof(iconvert). Since sizeof an
int most likely is 4, you will only loop 3 times.
> if (iplace == sizeof iplace)
Same bug here, I think.
> iplace--;
> iconvert[iplace] = 0;
A bit further in the code....
/* convert fractional part */
do {
fconvert[fplace++] =
(caps ? "0123456789ABCDEF"
: "0123456789abcdef")[fracpart % 10];
fracpart = (fracpart / 10);
} while (fplace < max);
if (fplace == sizeof fplace)
Same bug. Should probably be sizeof(fconvert), not fplace.
fplace--;
fconvert[fplace] = 0;
--
Jostein Tveit ([EMAIL PROTECTED])
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]