From 99d23a812164d17b9d8062ff5eac9eae04cbe950 Mon Sep 17 00:00:00 2001 From: Pieter Kockx Date: Wed, 4 Oct 2017 02:25:41 +0200 Subject: [PATCH] tr: Fix infinite loop When `makeset` got a string containing square brackets followed by at least one extra character, e.g. "[abc]d", it entered an infinite loop because it was assumed `j` could not exceed `len` without having been equal to `len`. It can, however, when `m == len` and subsequently `j = m + 1`. --- tr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tr.c b/tr.c index c235215..c5dbe7e 100644 --- a/tr.c +++ b/tr.c @@ -85,7 +85,7 @@ makeset(char *str, struct range **set, int (**check)(Rune)) if (rstr[i] == '[') { j = i; nextbrack: - if (j == len) + if (j >= len) goto literal; for (m = j; m < len; m++) if (rstr[m] == ']') { -- 2.13.5