git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH 1/1] line-range: Fix infinite loop bug with degenerate regex
@ 2022-12-05 19:23 Lars Kellogg-Stedman
  0 siblings, 0 replies; only message in thread
From: Lars Kellogg-Stedman @ 2022-12-05 19:23 UTC (permalink / raw)
  To: git; +Cc: Lars Kellogg-Stedman

When the -L argument to "git log" is passed the degenerate regular
expression "$" (as in "-L :$:line-range.c"), this results in an
infinite loop in find_funcname_matching_regexp() (the function
iterates through the file correctly, but when it reaches the end of
the file it matches $ against the empty string, "", and at that points
loops forever).

Modify the loop condition from while (1) to while (*start) so that the
loop exits when start is the empty string. In this case, "git log" exits
with the error:

    fatal: -L parameter '$' starting at line 1: no match

Originally reported in <https://stackoverflow.com/q/74690545/147356>.

Signed-off-by: Lars Kellogg-Stedman <lars@oddbit.com>
---
 line-range.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/line-range.c b/line-range.c
index 955a8a9535..9482d93d62 100644
--- a/line-range.c
+++ b/line-range.c
@@ -135,7 +135,7 @@ static const char *find_funcname_matching_regexp(xdemitconf_t *xecfg, const char
 {
 	int reg_error;
 	regmatch_t match[1];
-	while (1) {
+	while (*start) {
 		const char *bol, *eol;
 		reg_error = regexec(regexp, start, 1, match, 0);
 		if (reg_error == REG_NOMATCH)
-- 
2.38.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2022-12-05 19:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-05 19:23 [PATCH 1/1] line-range: Fix infinite loop bug with degenerate regex Lars Kellogg-Stedman

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).