Commit 0e7b9f864f517dfe0bc37419c037dd299fdd2a27

Werner Lemberg 2017-05-30T22:22:19

[psaux] Correctly handle sequences of multiple number signs. * src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero if we encounter more than a single sign.

diff --git a/ChangeLog b/ChangeLog
index 8a66677..9c79afe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2017-05-30  Werner Lemberg  <wl@gnu.org>
+
+	[psaux] Correctly handle sequences of multiple number signs.
+
+	* src/psaux/psconv.c (PS_Conv_Strtol, PS_Conv_ToFixed): Return zero
+	if we encounter more than a single sign.
+
 2017-05-29  Werner Lemberg  <wl@gnu.org>
 
 	[pcf] 32bit integer overflow run-time errors (#46149).
diff --git a/src/psaux/psconv.c b/src/psaux/psconv.c
index b092482..d125b08 100644
--- a/src/psaux/psconv.c
+++ b/src/psaux/psconv.c
@@ -111,6 +111,10 @@
       p++;
       if ( p == limit )
         goto Bad;
+
+      /* only a single sign is allowed */
+      if ( *p == '-' || *p == '+' )
+        return 0;
     }
 
     num_limit = 0x7FFFFFFFL / base;
@@ -215,6 +219,10 @@
       p++;
       if ( p == limit )
         goto Bad;
+
+      /* only a single sign is allowed */
+      if ( *p == '-' || *p == '+' )
+        return 0;
     }
 
     /* read the integer part */