]> git.ipfire.org Git - thirdparty/git.git/commit
global: convert intentionally-leaking config strings to consts
authorPatrick Steinhardt <ps@pks.im>
Fri, 7 Jun 2024 06:37:43 +0000 (08:37 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 7 Jun 2024 17:30:48 +0000 (10:30 -0700)
commitc113c5df7911bf7bc6a4542131ac5bf983532a97
treed27882381efd85f487bb96ecab3d2a43941dba6f
parentb567004b4b43f9b0d88aa1f0b15698eae8f15836
global: convert intentionally-leaking config strings to consts

There are multiple cases where we intentionally leak config strings:

  - `struct gpg_format` is used to track programs that can be used for
    signing commits, either via gpg(1), gpgsm(1) or ssh-keygen(1). The
    user can override the commands via several config variables. As the
    array is populated once, only, and the struct memers are never
    written to or free'd.

  - `struct ll_merge_driver` is used to track merge drivers. Same as
    with the GPG format, these drivers are populated once and then
    reused. Its data is never written to or free'd, either.

  - `struct userdiff_funcname` and `struct userdiff_driver` can be
    configured via `diff.<driver>.*` to add additional drivers. Again,
    these have a global lifetime and are never written to or free'd.

All of these are intentionally kept alive and are never written to.
Furthermore, all of these are being assigned both string constants in
some places, and allocated strings in other places. This will cause
warnings once we enable `-Wwrite-strings`, so let's mark the respective
fields as `const char *` and cast away the constness when assigning
those values.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
gpg-interface.c
merge-ll.c
userdiff.c
userdiff.h