Re: [PATCH 0/2] avoiding recursion in mailinfo
From: Patrick Steinhardt <hidden>
Date: 2023-12-15 07:58:58
Attachments
- signature.asc [application/pgp-signature] 833 bytes
From: Patrick Steinhardt <hidden>
Date: 2023-12-15 07:58:58
On Thu, Dec 14, 2023 at 04:44:44PM -0500, Jeff King wrote:
On Thu, Dec 14, 2023 at 08:41:20AM +0100, Patrick Steinhardt wrote:quoted
quoted
@@ -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; } }I doubt it's a big deal either way, but if it's that easy to do it might be worth it.Isn't this only protecting against unbalanced braces? That might be a sensible check to do regardless, but does it protect against recursion blowing the stack if you just happen to have many opening braces? Might be I'm missing something.It protects against recrusion blowing the stack because it removes the recursive call to unquote_comment(). ;)
Doh. Of course it does, I completely missed the removals.
The "depth" stuff is there because without recursion, we have to know when we've hit the correct closing paren (as opposed to an embedded one).
Yes, makes sense now. The patches look good to me, thanks! Patrick