Re: OpenSSL breaks factor(6)

From: Steve Kargl <sgk_at_troutmask.apl.washington.edu>
Date: Fri, 27 Dec 2019 13:47:17 -0800
On Fri, Dec 27, 2019 at 01:25:30PM -0800, Steve Kargl wrote:
> The use of OpenSSL in factor(6) breaks factor(6) with respect to
> its documentation.
> 
> % man factor
>   ...
>   Numbers may be preceded by a single '+'.
>   ...
> 
> % factor +125
> factor: +125: illegal numeric format.
> 

This fixes factor(6) for the above issue.  The issue with
hexadecimal is not easily fixed.

Index: factor.c
===================================================================
--- factor.c	(revision 355983)
+++ factor.c	(working copy)
_at__at_ -148,21 +148,23 _at__at_
 			for (p = buf; isblank(*p); ++p);
 			if (*p == '\n' || *p == '\0')
 				continue;
+			if (*p == '+') p++;
 			if (*p == '-')
 				errx(1, "negative numbers aren't permitted.");
-			if (BN_dec2bn(&val, buf) == 0 &&
-			    BN_hex2bn(&val, buf) == 0)
-				errx(1, "%s: illegal numeric format.", buf);
+			if (BN_dec2bn(&val, p) == 0 &&
+			    BN_hex2bn(&val, p) == 0)
+				errx(1, "%s: illegal numeric format.", p);
 			pr_fact(val);
 		}
 	/* Factor the arguments. */
 	else
-		for (; *argv != NULL; ++argv) {
-			if (argv[0][0] == '-')
+		for (p = *argv; p != NULL; p = *++argv) {
+			if (*p == '-')
 				errx(1, "negative numbers aren't permitted.");
-			if (BN_dec2bn(&val, argv[0]) == 0 &&
-			    BN_hex2bn(&val, argv[0]) == 0)
-				errx(1, "%s: illegal numeric format.", argv[0]);
+			if (*p == '+') p++;
+			if (BN_dec2bn(&val, p) == 0 &&
+			    BN_hex2bn(&val, p) == 0)
+				errx(1, "%s: illegal numeric format.", p);
 			pr_fact(val);
 		}
 	exit(0);

-- 
Steve
Received on Fri Dec 27 2019 - 20:47:20 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:22 UTC