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

Re: [PATCH] sideband: color lines with keyword only

From
Stefan Beller <sbeller@google.com>
Date
Dec 3, 2018, 23:35 UTC
Message-ID
<CAGZ79kY0w7Zt0Z4KNu7qL4Lz8fFpv2p51D-w_MgZBYPqPFbZKw@mail.gmail.com>
In-Reply-To
<20181203232353.GA157301@google.com>
On Mon, Dec 3, 2018 at 3:23 PM Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 7 quoted lines
> I was curious about what versions of Gerrit this is designed to
> support (or in other words whether it's a bug fix or a feature).
> Looking at examples like [1], it seems that Gerrit historically always
> used "ERROR:" so the 59a255aef0 logic would work for it.  More
> recently, [2] (ReceiveCommits: add a "SUCCESS" marker for successful
> change updates, 2018-08-21) put SUCCESS on a line of its own.  That
> puts this squarely in the new-feature category.

Ooops. From the internal bug, I assumed this to be long standing Gerrit behavior, which is why I sent it out in -rc to begin with.

Show 14 quoted lines
> > --- a/sideband.c
> > +++ b/sideband.c
> > @@ -87,7 +87,7 @@ static void maybe_colorize_sideband(struct strbuf *dest, const char *src, int n)
> >               struct keyword_entry *p = keywords + i;
> >               int len = strlen(p->keyword);
> >
> > -             if (n <= len)
> > +             if (n < len)
> >                       continue;
>
> In the old code, we would escape early if 'n == len', but we didn't
> need to.  If 'n == len', then
>
>         src[len] == '\0'

src[len] could also be one of "\n\r", see the caller recv_sideband for sidebase case 2.

>         src .. &src[len-1] is a valid buffer to read from
>
> so the strncasecmp and strbuf_add operations used in this function are
> valid.  Good.
Yes, they are all valid...
Show 7 quoted lines
> > -             if (!strncasecmp(p->keyword, src, len) && !isalnum(src[len])) {
> > +             if (!strncasecmp(p->keyword, src, len) &&
> > +                 (len == n || !isalnum(src[len]))) {
>
> Our custom isalnum treats '\0' as not alphanumeric (sane_ctype[0] ==
> GIT_CNTRL) so this part of the patch is unnecessary.  That said, it's
> good for clarity and defensive programming.
... but here we need to check for src[len] for validity.

I made no assumptions about isalnum, but rather needed to shortcut the condition, as accessing src[len] would be out of bounds, no?

>
> >                       strbuf_addstr(dest, p->color);
> >                       strbuf_add(dest, src, len);
unlike here (or the rest of the block), where len is used correctly.
Previous: Jonathan NiederNext: Jonathan Nieder
Message 4 of 7 in “sideband: color lines with keyword only”
  1. sideband: color lines with keyword onlyStefan Beller, Dec 3, 2018
  2. Jonathan NiederDec 3, 2018
  3. Jonathan NiederDec 3, 2018
  4. Stefan BellerDec 3, 2018
  5. Jonathan NiederDec 3, 2018
  6. Junio C HamanoDec 4, 2018
  7. Han-Wen NienhuysDec 10, 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.