git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC] git-format-patch: default to --from to avoid spoofed mails?

From
Jeff King <peff@peff.net>
Date
Jul 29, 2016, 00:16 UTC
Message-ID
<20160729001618.GA9646@sigill.intra.peff.net>
In-Reply-To
<xmqq4m79qujr.fsf@gitster.mtv.corp.google.com>
On Thu, Jul 28, 2016 at 03:14:48PM -0700, Junio C Hamano wrote:
Show 21 quoted lines
> > I think the original reason I did not make "--from" the default is that
> > I was worried about breaking consumers which do not know how to handle
> > in-body headers.
> 
> That's a fair concern.
> 
> So going back to Josh's original problem description:
> 
>     While git-send-email knows how to change the patch mails to use your own
>     address as "From:" and add a "From:" line to the body for the author,
>     any other tool used to send emails doesn't do that.
> 
> I wonder how these "any other tool" (that reads the format-patch
> output, i.e. mbox file with one mail per file each, and sends each
> as a piece of e-mail, without paying attention who you, the tool's
> user, are and blindly send them with the original "From:" and other
> headers intact in the header part of the message) are used in the
> wild to send patch submissions.  /usr/bin/mail or /usr/bin/Mail
> would not be among them, as I suspect they would place everything in
> the body part, and the would do so without stripping the "From "
> line that exists before each e-mail message.

I cannot speak for everybody, of course, but the reason I implemented "--from" is because my workflow is basically:

  git format-patch --from --stdout @{u}..HEAD >mbox
  mutt -f mbox

and then I use mutt's "resend" command to send each one. Mutt uses the "From" header written by format-patch as the default (and so I would have to manually move the headers around if not for "--from").

The commands above are wrapped in a script, so I have no problem remembering to type "--from", but I can see how it would be irritating for general use. I would go so far as to say that any time the patches are going to be mailed, that "--from" is the right thing to do (because otherwise you are relying on your MUA to avoid impersonating the original author).

The question in my mind is whether people actually use format-patch for things besides emailing, and if the final destination is something other than "git am". It is a handy format because it is the least-lossy way to move commits around external to git itself. That's why "rebase" used it originally. If the final destination is "am" (as it is for rebase), then in-body headers are OK, because we know it understands those. If not, then it's a regression.

I think on the whole that defaulting to "--from" would help more people than hurt them, but if we do believe there are scripts that would be regressed, it probably needs a deprecation period.

-Peff
Previous: Jeff KingNext: Josh Triplett
Message 7 of 19 in “[RFC] git-format-patch: default to --from to avoid spoofed mails?”
  1. Josh TriplettJul 28, 2016
  2. Junio C HamanoJul 28, 2016
  3. Jeff KingJul 28, 2016
  4. Junio C HamanoJul 28, 2016
  5. Josh TriplettJul 28, 2016
  6. Jeff KingJul 29, 2016
  7. Jeff KingJul 29, 2016
  8. Josh TriplettJul 29, 2016
  9. Jeff KingJul 29, 2016
  10. Josh TriplettJul 30, 2016
  11. Jeff KingJul 30, 2016
  12. Josh TriplettJul 30, 2016
  13. 0/2 format-patch: Transition the default to --from to avoid spoofed mailsJosh Triplett, Jul 30, 2016
  14. Junio C HamanoAug 1, 2016
  15. Jeff KingAug 1, 2016
  16. Junio C HamanoAug 1, 2016
  17. Josh TriplettJul 29, 2016
  18. Josh TriplettJul 29, 2016
  19. Junio C HamanoJul 29, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.