]> git.ipfire.org Git - thirdparty/git.git/commit
t/lib-httpd: stop using legacy crypt(3) for authentication
authorPatrick Steinhardt <ps@pks.im>
Fri, 10 Nov 2023 08:17:04 +0000 (09:17 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sat, 11 Nov 2023 00:00:42 +0000 (09:00 +0900)
commit5d70afa5d81ee7bbd25e875512f9fc3824b096b6
tree74c16aaebb0802d921480509a2c818464c090adf
parent7d05974d725a68b2498b2b0041e5e1e01c0187ac
t/lib-httpd: stop using legacy crypt(3) for authentication

When setting up httpd for our tests, we also install a passwd and
proxy-passwd file that contain the test user's credentials. These
credentials currently use crypt(3) as the password encryption schema.

This schema can be considered deprecated nowadays as it is not safe
anymore. Quoting Apache httpd's documentation [1]:

> Unix only. Uses the traditional Unix crypt(3) function with a
> randomly-generated 32-bit salt (only 12 bits used) and the first 8
> characters of the password. Insecure.

This is starting to cause issues in modern Linux distributions. glibc
has deprecated its libcrypt library that used to provide crypt(3) in
favor of the libxcrypt library. This newer replacement provides a
compile time switch to disable insecure password encryption schemata,
which causes crypt(3) to always return `EINVAL`. The end result is that
httpd tests that exercise authentication will fail on distros that use
libxcrypt without these insecure encryption schematas.

Regenerate the passwd files to instead use the default password
encryption schema, which is md5. While it feels kind of funny that an
MD5-based encryption schema should be more secure than anything else, it
is the current default and supported by all platforms. Furthermore, it
really doesn't matter all that much given that these files are only used
for testing purposes anyway.

[1]: https://httpd.apache.org/docs/2.4/misc/password_encryptions.html

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/lib-httpd/passwd
t/lib-httpd/proxy-passwd