From 6edc636bb497de461739e10000a29165df08c3dc Mon Sep 17 00:00:00 2001 From: Konstantin Ryabitsev Date: Tue, 3 Aug 2021 11:19:48 -0400 Subject: Don't consider signature contents for trailers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drop anything in the body below "-- " before parsing the contents for trailers. This won't catch all possible situations, as the "-- " standard is a bit of a dying standard, so add a list of known baddies like "Phone:" and "Email:" that are likely to trip us up. Reported-by: Uwe Kleine-König Link: https://lore.kernel.org/tools/20210719213535.vw3u4yg5mgxqysaf@pengutronix.de/ Signed-off-by: Konstantin Ryabitsev --- b4/__init__.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/b4/__init__.py b/b4/__init__.py index b45e26f..c019358 100644 --- a/b4/__init__.py +++ b/b4/__init__.py @@ -1369,8 +1369,11 @@ class LoreMessage: @staticmethod def find_trailers(body, followup=False): - headers = ('subject', 'date', 'from') - nonperson = ('fixes', 'subject', 'date', 'link', 'buglink', 'obsoleted-by') + ignores = {'phone', 'email'} + headers = {'subject', 'date', 'from'} + nonperson = {'fixes', 'subject', 'date', 'link', 'buglink', 'obsoleted-by'} + # Ignore everything below standard email signature marker + body = body.split('\n-- \n', 1)[0].strip() + '\n' # Fix some more common copypasta trailer wrapping # Fixes: abcd0123 (foo bar # baz quux) @@ -1393,6 +1396,9 @@ class LoreMessage: groups = list(matches.groups()) # We only accept headers if we haven't seen any non-trailer lines tname = groups[0].lower() + if tname in ignores: + logger.debug('Ignoring known non-trailer: %s', line) + continue if len(others) and tname in headers: logger.debug('Ignoring %s (header after other content)', line) continue -- cgit v1.2.3