Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2023-12-28 01:52:26 +0300
committerJunio C Hamano <gitster@pobox.com>2023-12-28 01:52:26 +0300
commit9df9e3770a15b47e48f8218eed6d68ebcb5eed6c (patch)
treeff84f3faaf9aff72b00c7b7229509e4ecfae2d9e /mailinfo.c
parentf6a129ceaf0b9a1e294fcb5abdaad3885b3a391d (diff)
parentdee182941fb685f5d85e61a0e9d97e8e91512f6c (diff)
Merge branch 'jk/mailinfo-iterative-unquote-comment'
The code to parse the From e-mail header has been updated to avoid recursion. * jk/mailinfo-iterative-unquote-comment: mailinfo: avoid recursion when unquoting From headers t5100: make rfc822 comment test more careful
Diffstat (limited to 'mailinfo.c')
-rw-r--r--mailinfo.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/mailinfo.c b/mailinfo.c
index 9681864216..94b9b0abf2 100644
--- a/mailinfo.c
+++ b/mailinfo.c
@@ -59,6 +59,7 @@ static void parse_bogus_from(struct mailinfo *mi, const struct strbuf *line)
static const char *unquote_comment(struct strbuf *outbuf, const char *in)
{
int take_next_literally = 0;
+ int depth = 1;
strbuf_addch(outbuf, '(');
@@ -72,11 +73,14 @@ static const char *unquote_comment(struct strbuf *outbuf, const char *in)
take_next_literally = 1;
continue;
case '(':
- in = unquote_comment(outbuf, in);
+ strbuf_addch(outbuf, '(');
+ depth++;
continue;
case ')':
strbuf_addch(outbuf, ')');
- return in;
+ if (!--depth)
+ return in;
+ continue;
}
}