/usr/bin/dc hangs

Paul Herman pherman at frenchfries.net
Fri Nov 19 21:57:33 PST 2004


On Thu, 18 Nov 2004, Paul Herman wrote:

Just saw this:

  bash$ echo "e(1.9)" | bc -l
  6.68589444227926941607
  bash$ echo "e(2.0)" | bc -l
  7.38905609893065022723
  bash$ echo "e(2.1)" | bc -l
  [...]
...and dc (that's with a 'd') just hangs consuming 100% of CPU. Seems to be 
true for any number > 2.0.  The older bc/dc work. Tried gcc2 and gcc34, same 
results.
I just heard back from otto (the author) and he says this is a bug 
in OpenSSL.  Here's the patch he forwarded to me.

-Paul.

Index: bn_word.c
===================================================================
RCS file: /cvs/src/lib/libssl/src/crypto/bn/bn_word.c,v
retrieving revision 1.5
retrieving revision 1.7
diff -u -p -r1.5 -r1.7
--- bn_word.c	12 May 2003 02:18:36 -0000	1.5
+++ bn_word.c	25 Sep 2003 19:55:36 -0000	1.7
@@ -110,6 +110,9 @@ int BN_add_word(BIGNUM *a, BN_ULONG w)
 	BN_ULONG l;
 	int i;
+	if ((w & BN_MASK2) == 0)
+		return(1);
+
 	if (a->neg)
 		{
 		a->neg=0;
@@ -142,6 +145,9 @@ int BN_add_word(BIGNUM *a, BN_ULONG w)
 int BN_sub_word(BIGNUM *a, BN_ULONG w)
 	{
 	int i;
+
+	if ((w & BN_MASK2) == 0)
+		return(1);
 	if (BN_is_zero(a) || a->neg)
 		{




More information about the Bugs mailing list