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

Re: [PATCH] blame: prefer xsnprintf to strcpy for colors

From
Jeff King <peff@peff.net>
Date
Jul 13, 2018, 21:04 UTC
Message-ID
<20180713210452.GA18909@sigill.intra.peff.net>
In-Reply-To
<CAGZ79kakrS_tk=x4Rb9qSu9e4RVSJ=J64eOdasKhOy=g8kV68w@mail.gmail.com>
On Fri, Jul 13, 2018 at 01:58:05PM -0700, Stefan Beller wrote:
Show 6 quoted lines
> > I'm sad that this strcpy() wasn't caught in review. IMHO we should avoid
> > that function altogether, even when we _think_ it can't trigger an
> > overflow. That's easier to reason about (and makes auditing easier).
> 
> Can we somehow automatically find "bad code" either in pathces
> or in new code (such as pu), e.g. as a coccicheck for these functions?

I'd be happy to declare strcpy() totally banned (and it more or less is). I found this with a simple "git grep", though it seems like a trivial application of coccinelle to find it. The question is what to convert it into. xsnprintf() is often a good choice, but not always (e.g., if the destination isn't an array, we'd have to get the size from somewhere else).

I wouldn't be surprised if there's a way to ask coccinelle to convert the easy cases and barf with an error on the hard cases or something. I don't know the tool very well.

-Peff
Previous: Stefan BellerNext: Stefan Beller
Message 3 of 5 in “blame: prefer xsnprintf to strcpy for colors”
  1. blame: prefer xsnprintf to strcpy for colorsJeff King, Jul 13, 2018
  2. Stefan BellerJul 13, 2018
  3. Jeff KingJul 13, 2018
  4. Stefan BellerJul 13, 2018
  5. Jeff KingJul 13, 2018

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.