Patchwork D9325: histedit: don't crash if commit message is empty

login
register
mail settings
Submitter phabricator
Date Nov. 16, 2020, 7:10 p.m.
Message ID <differential-rev-PHID-DREV-wtkwu5l4bvxr53nhvc4b-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/47601/
State Superseded
Headers show

Comments

phabricator - Nov. 16, 2020, 7:10 p.m.
martinvonz created this revision.
Herald added a reviewer: durin42.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  If the commit message is empty, histedit will crash before this patch
  because it assumes that `summary.splitlines()` is non-empty. One of
  our users at work ran into this crash for a commit that was created by
  an internal system.
  
  I don't think we have a good way of testing this because it's hard to
  create a commit with an empty commit message. I've added a comment to
  help prevent regressions.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D9325

AFFECTED FILES
  hgext/histedit.py

CHANGE DETAILS




To: martinvonz, durin42, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -528,7 +528,8 @@ 
         summary = cmdutil.rendertemplate(
             ctx, ui.config(b'histedit', b'summary-template')
         )
-        summary = summary.splitlines()[0]
+        # Handle the fact that `''.splitlines() => []`
+        summary = summary.splitlines()[0] if summary else b''
         line = b'%s %s %s' % (self.verb, ctx, summary)
         # trim to 75 columns by default so it's not stupidly wide in my editor
         # (the 5 more are left for verb)