bison: please address sanitizer

* src/parse-gram.y (add_param): Asan does not like that the second
argument of strspn is not 0-terminated.
This commit is contained in:
Akim Demaille
2018-05-27 10:44:41 +02:00
parent f24afe4435
commit 6fd3372db4

View File

@@ -780,7 +780,7 @@ translate_code_braceless (char *code, location loc)
static void static void
add_param (param_type type, char *decl, location loc) add_param (param_type type, char *decl, location loc)
{ {
static char const alphanum[26 + 26 + 1 + 10] = static char const alphanum[26 + 26 + 1 + 10 + 1] =
"abcdefghijklmnopqrstuvwxyz" "abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"_" "_"
@@ -792,14 +792,14 @@ add_param (param_type type, char *decl, location loc)
/* Stop on last actual character. */ /* Stop on last actual character. */
for (p = decl; p[1]; p++) for (p = decl; p[1]; p++)
if ((p == decl if ((p == decl
|| ! memchr (alphanum, p[-1], sizeof alphanum)) || ! memchr (alphanum, p[-1], sizeof alphanum - 1))
&& memchr (alphanum, p[0], sizeof alphanum - 10)) && memchr (alphanum, p[0], sizeof alphanum - 10 - 1))
name_start = p; name_start = p;
/* Strip the surrounding '{' and '}', and any blanks just inside /* Strip the surrounding '{' and '}', and any blanks just inside
the braces. */ the braces. */
--p; --p;
while (c_isspace ((unsigned char) *p)) while (c_isspace ((unsigned char) *p))
--p; --p;
p[1] = '\0'; p[1] = '\0';
++decl; ++decl;