All of lore.kernel.org
 help / color / mirror / Atom feed
From: Emily Shaffer <emilyshaffer@google.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v4 10/15] bugreport: add config values from safelist
Date: Mon, 16 Dec 2019 15:40:36 -0800	[thread overview]
Message-ID: <20191216234036.GK135450@google.com> (raw)
In-Reply-To: <xmqq4ky3j3w4.fsf@gitster-ct.c.googlers.com>

On Fri, Dec 13, 2019 at 01:45:47PM -0800, Junio C Hamano wrote:
> Emily Shaffer <emilyshaffer@google.com> writes:
> 
> > Teach bugreport to gather the values of config options which are present
> > in 'bugreport-config-safelist.h'.
> >
> > Many config options are sensitive, and many Git add-ons use config
> > options which git-core does not know about; it is better only to gather
> > config options which we know to be safe, rather than excluding options
> > which we know to be unsafe.
> >
> > Taking the build-time generated array and putting it into a set saves us
> > time - since git_config_bugreport() is called for every option the user
> > has configured, performing option lookup in constant time is a useful
> > optimization.
> 
> Interesting.  I actually was expecting the look-up to go the other
> way around.  We know the safe keys, so iterate over them and grab
> their values, if defined.  No need for hashes or anything, but just
> a simple linear list of safe stuff.

Hm. Without looking at the code, I said to myself,
"repo_config_get_value() will open all the available config files to
find the resolved value, so I don't want to do n*4 file open/closes, I
only want to do 4 total."

Now I look at the code and see that the configs are already being read
into a hashset before now. So you're right that it doesn't make sense
for me to do it this way....

> 
> But that is too simple-minded.  If we wanted to safelist foo.*.bar,
> where '*' can be anything, walking on the list of safe variables
> would not work.  We must have a hash table that knows "foo.*.bar" is
> allowed, and while walking all the configuration keys, when we see
> foo.a.bar, we consult "foo.*.bar" as well as "foo.a.bar" to see if
> it is whitelisted, or something like that.

...unless we want to use wildcards like you suggest.

But I'm not sure it's a good idea. I envision someone writing another
Git add-on, which offers someone to specify "user.password" and
automagically do some Bitbucket interaction, or something. (An extreme
and misguided example, but I hope the point remains.) Then if I say,
"all the user.* configs I can see in 'git help config' are safe, so I
will just safelist user.*," I'm not accounting for this other tool's
known configs which are a superset of what Git knows and expects.

The point of this safelist-generation exercise is to avoid accidentally
printing some sensitive user config, and the point of using a safelist
instead of a blocklist is to avoid printing a third-party config we
didn't know about (or messing up our pattern matching). So I suggest we
avoid pattern matching entirely.

> 
> But then I am not sure if this implementation does something like
> this for three-level names.  If not, I do not see much point in use
> of the hash there either.
> 
> Puzzled.

I'd prefer to solve it by iterating over the compile-time-generated
safelist using get_config_value_multi(), which I clock at O(n) for n =
safelist length: performing n calls to an O(1) hashset lookup. That
saves us the O(n*log(n)) hashset population, and the implementation of
Yet Another Set in the source.

Thanks.

 - Emily

  reply	other threads:[~2019-12-16 23:40 UTC|newest]

Thread overview: 273+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-13  0:42 [PATCH v4 00/15] add git-bugreport tool Emily Shaffer
2019-12-13  0:42 ` [PATCH v4 01/15] bugreport: add tool to generate debugging info Emily Shaffer
2019-12-13  0:42 ` [PATCH v4 02/15] help: move list_config_help to builtin/help Emily Shaffer
2019-12-13 20:51   ` Junio C Hamano
2019-12-16 21:36     ` Emily Shaffer
2019-12-16 22:19       ` Junio C Hamano
2019-12-16 22:34         ` Emily Shaffer
2019-12-13  0:43 ` [PATCH v4 03/15] bugreport: gather git version and build info Emily Shaffer
2019-12-13 21:06   ` Junio C Hamano
2019-12-20  1:46     ` Emily Shaffer
2019-12-17 18:45   ` Johannes Schindelin
2019-12-17 20:34     ` Junio C Hamano
2019-12-20  1:25       ` Emily Shaffer
2019-12-13  0:43 ` [PATCH v4 04/15] help: add shell-path to --build-options Emily Shaffer
2019-12-13  0:43 ` [PATCH v4 05/15] bugreport: add uname info Emily Shaffer
2019-12-13 21:12   ` Junio C Hamano
2020-01-10  2:05   ` Aaron Schrab
2019-12-13  0:43 ` [PATCH v4 06/15] bugreport: add glibc version Emily Shaffer
2019-12-13 21:18   ` Junio C Hamano
2019-12-16 22:39     ` Emily Shaffer
2019-12-13  0:43 ` [PATCH v4 07/15] bugreport: add curl version Emily Shaffer
2019-12-13 21:27   ` Junio C Hamano
2019-12-16 22:49     ` Emily Shaffer
2019-12-17 18:47   ` Johannes Schindelin
2019-12-13  0:43 ` [PATCH v4 08/15] bugreport: include user interactive shell Emily Shaffer
2019-12-13 21:38   ` Junio C Hamano
2019-12-13  0:43 ` [PATCH v4 09/15] bugreport: generate config safelist based on docs Emily Shaffer
2019-12-13 22:57   ` Junio C Hamano
2019-12-16 23:01     ` Emily Shaffer
2019-12-17  0:41       ` Emily Shaffer
2019-12-15 20:17   ` Johannes Schindelin
2019-12-16 22:52     ` Emily Shaffer
2019-12-17 18:38   ` Johannes Schindelin
2019-12-13  0:43 ` [PATCH v4 10/15] bugreport: add config values from safelist Emily Shaffer
2019-12-13 21:45   ` Junio C Hamano
2019-12-16 23:40     ` Emily Shaffer [this message]
2019-12-17 17:43       ` Junio C Hamano
2020-01-24  3:29         ` Emily Shaffer
2019-12-29 20:17   ` Johannes Schindelin
2019-12-13  0:43 ` [PATCH v4 11/15] bugreport: collect list of populated hooks Emily Shaffer
2019-12-13 21:47   ` Junio C Hamano
2019-12-16 23:51     ` Emily Shaffer
2019-12-13  0:43 ` [PATCH v4 12/15] bugreport: count loose objects Emily Shaffer
2019-12-13 21:51   ` Junio C Hamano
2019-12-16 23:54     ` Emily Shaffer
2019-12-13  0:43 ` [PATCH v4 13/15] bugreport: add packed object summary Emily Shaffer
2019-12-13 21:56   ` Junio C Hamano
2019-12-16 23:56     ` Emily Shaffer
2019-12-13  0:43 ` [PATCH v4 14/15] bugreport: list contents of $OBJDIR/info Emily Shaffer
2019-12-13  0:43 ` [PATCH v4 15/15] bugreport: summarize contents of alternates file Emily Shaffer
2020-01-24  3:34 ` [PATCH v5 00/15] add git-bugreport tool emilyshaffer
2020-01-24  3:34   ` [PATCH v5 01/15] bugreport: add tool to generate debugging info emilyshaffer
2020-01-30 22:18     ` Martin Ågren
2020-02-04 22:00       ` Emily Shaffer
2020-01-24  3:34   ` [PATCH v5 02/15] help: move list_config_help to builtin/help emilyshaffer
2020-01-30 22:19     ` Martin Ågren
2020-02-04  0:53       ` Emily Shaffer
2020-01-24  3:34   ` [PATCH v5 03/15] bugreport: gather git version and build info emilyshaffer
2020-01-30 22:19     ` Martin Ågren
2020-02-04 22:21       ` Emily Shaffer
2020-01-24  3:34   ` [PATCH v5 04/15] help: add shell-path to --build-options emilyshaffer
2020-01-30 22:21     ` Martin Ågren
2020-01-24  3:34   ` [PATCH v5 05/15] bugreport: add uname info emilyshaffer
2020-01-24  3:34   ` [PATCH v5 06/15] bugreport: add compiler info emilyshaffer
2020-01-30 22:21     ` Martin Ågren
2020-02-04 22:51       ` Emily Shaffer
2020-02-05 19:47         ` Martin Ågren
2020-01-24  3:34   ` [PATCH v5 07/15] bugreport: add curl version emilyshaffer
2020-01-30 22:27     ` Martin Ågren
2020-02-04 22:54       ` Emily Shaffer
2020-01-24  3:34   ` [PATCH v5 08/15] bugreport: include user interactive shell emilyshaffer
2020-01-30 22:28     ` Martin Ågren
2020-02-04 23:16       ` Emily Shaffer
2020-02-05 20:06       ` Junio C Hamano
2020-02-05 20:14         ` Martin Ågren
2020-01-24  3:34   ` [PATCH v5 09/15] bugreport: generate config safelist based on docs emilyshaffer
2020-01-30 22:34     ` Martin Ågren
2020-02-05  0:44       ` Emily Shaffer
2020-02-05 19:53         ` Martin Ågren
2020-01-31 21:20     ` Martin Ågren
2020-02-05  0:30       ` Emily Shaffer
2020-02-05  0:52         ` Emily Shaffer
2020-01-24  3:34   ` [PATCH v5 10/15] bugreport: add config values from safelist emilyshaffer
2020-01-30 22:36     ` Martin Ågren
2020-02-05  1:34       ` Emily Shaffer
2020-01-31 21:25     ` Martin Ågren
2020-02-05  2:31       ` Emily Shaffer
2020-02-05 20:12         ` Martin Ågren
2020-01-24  3:34   ` [PATCH v5 11/15] bugreport: collect list of populated hooks emilyshaffer
2020-02-04 18:44     ` Junio C Hamano
2020-02-05  2:48       ` Emily Shaffer
2020-02-05  3:00         ` Emily Shaffer
2020-01-24  3:34   ` [PATCH v5 12/15] bugreport: count loose objects emilyshaffer
2020-02-04 18:48     ` Junio C Hamano
2020-02-05  2:50       ` Emily Shaffer
2020-01-24  3:34   ` [PATCH v5 13/15] bugreport: add packed object summary emilyshaffer
2020-02-04 19:00     ` Junio C Hamano
2020-02-05  3:15       ` Emily Shaffer
2020-02-04 19:03     ` Junio C Hamano
2020-02-05  3:09       ` Emily Shaffer
2020-01-24  3:34   ` [PATCH v5 14/15] bugreport: list contents of $OBJDIR/info emilyshaffer
2020-01-24  3:34   ` [PATCH v5 15/15] bugreport: summarize contents of alternates file emilyshaffer
2020-01-24  3:38   ` [PATCH v5 00/15] add git-bugreport tool Emily Shaffer
2020-01-28 23:04   ` Jonathan Tan
2020-01-28 23:26     ` Emily Shaffer
2020-01-30 22:15   ` Martin Ågren
2020-02-04  0:07     ` Emily Shaffer
2020-02-06  0:40   ` [PATCH v6 " Emily Shaffer
2020-02-06  0:40     ` [PATCH v6 01/15] help: move list_config_help to builtin/help Emily Shaffer
2020-02-06  1:35       ` Danh Doan
2020-02-13 22:58         ` Emily Shaffer
2020-02-13 23:07           ` Eric Sunshine
2020-02-13 23:24             ` Junio C Hamano
2020-02-13 23:29               ` Eric Sunshine
2020-02-14  1:20                 ` Emily Shaffer
2020-02-06  0:40     ` [PATCH v6 02/15] help: add shell-path to --build-options Emily Shaffer
2020-02-06  0:40     ` [PATCH v6 03/15] bugreport: add tool to generate debugging info Emily Shaffer
2020-02-07 14:18       ` SZEDER Gábor
2020-02-07 18:51         ` Junio C Hamano
2020-02-11 22:40           ` Emily Shaffer
2020-02-07 14:54       ` SZEDER Gábor
2020-02-12 18:06       ` Junio C Hamano
2020-02-12 22:36         ` Emily Shaffer
2020-02-06  0:40     ` [PATCH v6 04/15] bugreport: gather git version and build info Emily Shaffer
2020-02-06  0:40     ` [PATCH v6 05/15] bugreport: add uname info Emily Shaffer
2020-02-06  0:40     ` [PATCH v6 06/15] bugreport: add compiler info Emily Shaffer
2020-02-06  0:41     ` [PATCH v6 07/15] bugreport: add git-remote-https version Emily Shaffer
2020-02-06  0:41     ` [PATCH v6 08/15] bugreport: include user interactive shell Emily Shaffer
2020-02-06  0:41     ` [PATCH v6 09/15] bugreport: generate config safelist based on docs Emily Shaffer
2020-02-07 15:30       ` SZEDER Gábor
2020-02-13 23:14         ` Emily Shaffer
2020-02-06  0:41     ` [PATCH v6 10/15] bugreport: add config values from safelist Emily Shaffer
2020-02-07 14:47       ` SZEDER Gábor
2020-02-07 15:08         ` SZEDER Gábor
2020-02-07 16:24           ` Eric Sunshine
2020-02-07 16:51             ` Andreas Schwab
2020-02-13 22:02               ` Emily Shaffer
2020-02-06  0:41     ` [PATCH v6 11/15] bugreport: collect list of populated hooks Emily Shaffer
2020-02-06  0:41     ` [PATCH v6 12/15] bugreport: count loose objects Emily Shaffer
2020-02-06  0:41     ` [PATCH v6 13/15] bugreport: add packed object summary Emily Shaffer
2020-02-06  0:41     ` [PATCH v6 14/15] bugreport: list contents of $OBJDIR/info Emily Shaffer
2020-02-06  0:41     ` [PATCH v6 15/15] bugreport: summarize contents of alternates file Emily Shaffer
2020-02-14  1:53     ` [PATCH v7 00/15] add git-bugreport tool Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 01/15] help: move list_config_help to builtin/help Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 02/15] help: add shell-path to --build-options Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 03/15] bugreport: add tool to generate debugging info Emily Shaffer
2020-02-14 17:25         ` Junio C Hamano
2020-02-15  1:57           ` Emily Shaffer
2020-02-15 18:24             ` Junio C Hamano
2020-02-18 23:46               ` Emily Shaffer
2020-02-18 23:56                 ` Emily Shaffer
2020-02-19 23:15                   ` Emily Shaffer
2020-02-19 23:24                     ` Junio C Hamano
2020-02-19 14:18         ` Johannes Schindelin
2020-02-19 16:55           ` Junio C Hamano
2020-02-19 21:52             ` Emily Shaffer
2020-02-19 22:09               ` Junio C Hamano
2020-02-19 23:06                 ` Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 04/15] bugreport: gather git version and build info Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 05/15] bugreport: add uname info Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 06/15] bugreport: add compiler info Emily Shaffer
2020-02-19 14:23         ` Johannes Schindelin
2020-02-19 22:45           ` Emily Shaffer
2020-02-20 22:33             ` Johannes Schindelin
2020-02-20 23:33               ` Emily Shaffer
2020-02-21 15:22                 ` Johannes Schindelin
2020-02-22  0:04                   ` Emily Shaffer
2020-02-24  2:55                     ` Junio C Hamano
2020-02-14  1:53       ` [PATCH v7 07/15] bugreport: add git-remote-https version Emily Shaffer
2020-02-19 14:28         ` Johannes Schindelin
2020-02-19 22:28           ` Emily Shaffer
2020-02-19 22:33             ` Junio C Hamano
2020-02-20 22:33               ` Johannes Schindelin
2020-02-14  1:53       ` [PATCH v7 08/15] bugreport: include user interactive shell Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 09/15] bugreport: generate config safelist based on docs Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 10/15] bugreport: add config values from safelist Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 11/15] bugreport: collect list of populated hooks Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 12/15] bugreport: count loose objects Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 13/15] bugreport: add packed object summary Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 14/15] bugreport: list contents of $OBJDIR/info Emily Shaffer
2020-02-14 17:04         ` Junio C Hamano
2020-02-18 23:59           ` Emily Shaffer
2020-02-14  1:53       ` [PATCH v7 15/15] bugreport: summarize contents of alternates file Emily Shaffer
2020-02-14 17:32       ` [PATCH v7 00/15] add git-bugreport tool Junio C Hamano
2020-02-14 22:00         ` Emily Shaffer
2020-02-14 22:30           ` Junio C Hamano
2020-02-20  1:58       ` [PATCH v8 " Emily Shaffer
2020-02-20  1:58         ` [PATCH v8 01/15] help: move list_config_help to builtin/help Emily Shaffer
2020-02-20  1:58         ` [PATCH v8 02/15] help: add shell-path to --build-options Emily Shaffer
2020-02-20 19:03           ` Junio C Hamano
2020-02-20 21:15             ` Emily Shaffer
2020-02-20  1:58         ` [PATCH v8 03/15] bugreport: add tool to generate debugging info Emily Shaffer
2020-02-20 19:33           ` Junio C Hamano
2020-02-20 22:33             ` Emily Shaffer
2020-02-26 16:12           ` Johannes Schindelin
2020-02-20  1:58         ` [PATCH v8 04/15] bugreport: gather git version and build info Emily Shaffer
2020-02-20 20:07           ` Junio C Hamano
2020-02-20 23:03             ` Emily Shaffer
2020-02-20 23:18               ` Junio C Hamano
2020-02-20  1:58         ` [PATCH v8 05/15] bugreport: add uname info Emily Shaffer
2020-02-20 20:12           ` Junio C Hamano
2020-02-20 23:20             ` Emily Shaffer
2020-02-20  1:58         ` [PATCH v8 06/15] bugreport: add compiler info Emily Shaffer
2020-02-20  2:49           ` Danh Doan
2020-02-20 23:23             ` Emily Shaffer
2020-02-20 20:23           ` Junio C Hamano
2020-02-21  0:26           ` Junio C Hamano
2020-02-20  1:58         ` [PATCH v8 07/15] bugreport: add git-remote-https version Emily Shaffer
2020-02-20 20:35           ` Junio C Hamano
2020-02-20 23:28             ` Emily Shaffer
2020-02-21  3:44               ` Junio C Hamano
2020-02-25 22:08                 ` Emily Shaffer
2020-02-25 22:26                   ` Junio C Hamano
2020-02-25 23:29                     ` Emily Shaffer
2020-02-25 23:29                   ` Junio C Hamano
2020-02-25 23:55                     ` Emily Shaffer
2020-02-20  1:58         ` [PATCH v8 08/15] bugreport: include user interactive shell Emily Shaffer
2020-02-20  1:58         ` [PATCH v8 09/15] bugreport: generate config safelist based on docs Emily Shaffer
2020-02-20 20:40           ` Junio C Hamano
2020-02-26 16:13           ` Johannes Schindelin
2020-02-26 16:49             ` Junio C Hamano
2020-02-20  1:58         ` [PATCH v8 10/15] bugreport: add config values from safelist Emily Shaffer
2020-02-20 20:47           ` Junio C Hamano
2020-02-20  1:58         ` [PATCH v8 11/15] bugreport: collect list of populated hooks Emily Shaffer
2020-02-20 20:58           ` Junio C Hamano
2020-02-25 23:19             ` Emily Shaffer
2020-02-20  1:58         ` [PATCH v8 12/15] bugreport: count loose objects Emily Shaffer
2020-02-20 21:04           ` Junio C Hamano
2020-02-25 23:22             ` Emily Shaffer
2020-02-25 23:26               ` Emily Shaffer
2020-02-20  1:58         ` [PATCH v8 13/15] bugreport: add packed object summary Emily Shaffer
2020-02-20 22:04           ` Junio C Hamano
2020-02-25 23:58             ` Emily Shaffer
2020-02-20  1:58         ` [PATCH v8 14/15] bugreport: list contents of $OBJDIR/info Emily Shaffer
2020-02-20 22:18           ` Junio C Hamano
2020-02-20  1:58         ` [PATCH v8 15/15] bugreport: summarize contents of alternates file Emily Shaffer
2020-02-20 14:08           ` Johannes Schindelin
2020-02-20 22:22           ` Junio C Hamano
2020-03-02 23:03         ` [PATCH v9 0/5] add git-bugreport tool Emily Shaffer
2020-03-02 23:03           ` [PATCH v9 1/5] help: move list_config_help to builtin/help Emily Shaffer
2020-03-02 23:03           ` [PATCH v9 2/5] bugreport: add tool to generate debugging info Emily Shaffer
2020-03-03 14:18             ` Johannes Schindelin
2020-03-04 21:35             ` Johannes Schindelin
2020-03-05 23:34               ` Jeff Hostetler
2020-03-06 13:57                 ` Johannes Schindelin
2020-03-06 18:25                   ` Junio C Hamano
2020-03-06 18:08                 ` Junio C Hamano
2020-03-06 18:58                   ` Jeff Hostetler
2020-03-08 22:24                   ` Johannes Schindelin
2020-03-09 14:59                     ` Junio C Hamano
2020-03-09 19:17                       ` Johannes Schindelin
2020-03-09 19:47                         ` Junio C Hamano
2020-03-10 11:42                           ` Johannes Schindelin
2020-03-10 18:37                             ` Junio C Hamano
2020-03-10 22:08                               ` Johannes Schindelin
2020-03-19 21:39               ` Emily Shaffer
2020-03-20  0:28                 ` Junio C Hamano
2020-03-20 15:35                   ` Johannes Schindelin
2020-03-23 18:52                     ` Emily Shaffer
2020-03-20 15:42                 ` Johannes Schindelin
2020-03-23 18:50                   ` Emily Shaffer
2020-03-20 17:43                 ` Junio C Hamano
2020-03-20 22:38                   ` Johannes Schindelin
2020-03-20 22:47                     ` Junio C Hamano
2020-03-21 10:53                       ` Johannes Schindelin
2020-03-02 23:03           ` [PATCH v9 3/5] bugreport: gather git version and build info Emily Shaffer
2020-03-23 21:20             ` Junio C Hamano
2020-03-02 23:03           ` [PATCH v9 4/5] bugreport: add uname info Emily Shaffer
2020-03-02 23:04           ` [PATCH v9 5/5] bugreport: add compiler info Emily Shaffer
2020-03-03 11:46             ` Danh Doan
2020-03-03 14:07             ` Junio C Hamano
2020-03-04 21:39             ` Johannes Schindelin
2020-03-23 21:27               ` Emily Shaffer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191216234036.GK135450@google.com \
    --to=emilyshaffer@google.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.