From bdfd83e42d0044db7e99cec452427c0b76d46f20 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Sun, 12 Dec 2021 11:26:22 +0100 Subject: [PATCH] Fix an off-by-one error in TEX parsing in etags * lib-src/etags.c (TEX_decode_env): Fix off-by-one parsing of TEXTAGS environment variable (bug#52438). Based on a patch by David Fussner and amended by Andreas Schwab . --- lib-src/etags.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib-src/etags.c b/lib-src/etags.c index bd4d4fcf53a..af142b0b3d1 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -5773,7 +5773,7 @@ static void TEX_decode_env (const char *evarname, const char *defenv) { const char *env, *p; - ptrdiff_t len; + ptrdiff_t len = 1; /* Append default string to environment. */ env = getenv (evarname); @@ -5782,8 +5782,13 @@ TEX_decode_env (const char *evarname, const char *defenv) else env = concat (env, defenv, ""); + /* If the environment variable starts with a colon, increase the + length of the token table. */ + if (*env == ':') + len++; + /* Allocate a token table */ - for (len = 1, p = env; (p = strchr (p, ':')); ) + for (p = env; (p = strchr (p, ':')); ) if (*++p) len++; TEX_toktab = xnew (len, linebuffer); -- 2.39.5