[Bug 264656] sh(1): should disregard trailing blanks in variables in arithmetic expressions.

From: <bugzilla-noreply_at_freebsd.org>
Date: Mon, 13 Jun 2022 12:50:13 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264656

--- Comment #1 from Rajeev Pillai <rajeev_v_pillai@yahoo.com> ---
A better patch is this one (saves 2 function calls):

---START---
diff -urN bin/sh.orig/arith_yacc.c bin/sh/arith_yacc.c
--- bin/sh.orig/arith_yacc.c    2022-05-12 04:53:55.000000000 +0000
+++ bin/sh/arith_yacc.c 2022-06-13 12:39:52.888785000 +0000
@@ -35,6 +35,7 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");

+#include <ctype.h>
 #include <limits.h>
 #include <errno.h>
 #include <inttypes.h>
@@ -92,6 +93,13 @@
        /* NOTREACHED */
 }

+static inline int is_blank(const char *p)
+{
+       while (isspace((unsigned char)*p))
+               p++;
+       return *p == '\0';
+}
+
 static arith_t arith_lookupvarint(char *varname)
 {
        const char *str;
@@ -105,7 +113,7 @@
                str = "0";
        errno = 0;
        result = strtoarith_t(str, &p);
-       if (errno != 0 || *p != '\0')
+       if (errno != 0 || !is_blank(p))
                yyerror("variable conversion error");
        return result;
 }
---END---

-- 
You are receiving this mail because:
You are the assignee for the bug.