Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Nov 2012 13:06:55 +1100
From:      Jan Mikkelsen <janm@transactionware.com>
To:        FreeBSD Stable <freebsd-stable@freebsd.org>
Subject:   dc(1) fails with "big number failure" on 2^64
Message-ID:  <2ABD38E2-A9F7-4AD3-9364-B21F6566F7CB@transactionware.com>

next in thread | raw e-mail | index | archive | help
Hi,

I am seeing this in dc:

janm@gray: dc $ dc
18446744073709551616 18446744073709551616 / ps
dc: big number failure 306b06b: No such file or directory

That number is 2^64. The error is coming from BN_check in bdiv(), which =
is complaining about the number at the top of the stack being =
uninitialised. Looking at the data, after the second pop in bdiv() in =
bdata.c, b->number->d[b->number->top - 1] =3D=3D 0. After a while poking =
around in a debugger, it looks like the first word of the second number =
(a->number->d) is being allocated at the same location as the last word =
of the second number, it gets zeroed, and then looks uninitialised.

All of this seems to be happening in the BN_* routines in openssl.

I am seeing this on my builds for 9.1-RC3 and 9.0-p3, as well as the =
CDROM shell on the 9.1-RC3 ISO, so I'm pretty sure it isn't my build =
process or compiler flags. I have checked an OpenBSD 5.2 installation, =
and it works fine.

Can anyone confirm this? Am I just seeing things? Is there an obvious =
fix?

Thanks,

Jan Mikkelsen




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2ABD38E2-A9F7-4AD3-9364-B21F6566F7CB>