Backport upstream commit preferring gensalt with autoentropy
This commit is contained in:
parent
6eff6819b8
commit
a0fce7ff9b
95
pam-1.3.1-unix-gensalt-autoentropy.patch
Normal file
95
pam-1.3.1-unix-gensalt-autoentropy.patch
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
From 05aa693b7db6b818d31e41f0cab1d5fb4f49600e Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= <besser82@fedoraproject.org>
|
||||||
|
Date: Thu, 15 Nov 2018 15:58:56 +0100
|
||||||
|
Subject: [PATCH] pam_unix: Prefer a gensalt function, that supports auto
|
||||||
|
entropy.
|
||||||
|
|
||||||
|
* modules/pam_unix/pam_unix_passwd.c: Initialize rounds parameter to 0.
|
||||||
|
* modules/pam_unix/passverify.c: Prefer gensalt with auto entropy.
|
||||||
|
* modules/pam_unix/support.c: Fix sanitizing of rounds parameter.
|
||||||
|
---
|
||||||
|
modules/pam_unix/pam_unix_passwd.c | 2 +-
|
||||||
|
modules/pam_unix/passverify.c | 13 +++++++++++++
|
||||||
|
modules/pam_unix/support.c | 7 +++++--
|
||||||
|
3 files changed, 19 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
Index: Linux-PAM-1.3.1/modules/pam_unix/pam_unix_passwd.c
|
||||||
|
===================================================================
|
||||||
|
--- Linux-PAM-1.3.1.orig/modules/pam_unix/pam_unix_passwd.c
|
||||||
|
+++ Linux-PAM-1.3.1/modules/pam_unix/pam_unix_passwd.c
|
||||||
|
@@ -607,7 +607,7 @@ pam_sm_chauthtok(pam_handle_t *pamh, int
|
||||||
|
unsigned int ctrl, lctrl;
|
||||||
|
int retval;
|
||||||
|
int remember = -1;
|
||||||
|
- int rounds = -1;
|
||||||
|
+ int rounds = 0;
|
||||||
|
int pass_min_len = 0;
|
||||||
|
|
||||||
|
/* <DO NOT free() THESE> */
|
||||||
|
Index: Linux-PAM-1.3.1/modules/pam_unix/passverify.c
|
||||||
|
===================================================================
|
||||||
|
--- Linux-PAM-1.3.1.orig/modules/pam_unix/passverify.c
|
||||||
|
+++ Linux-PAM-1.3.1/modules/pam_unix/passverify.c
|
||||||
|
@@ -375,7 +375,12 @@ PAMH_ARG_DECL(char * create_password_has
|
||||||
|
const char *password, unsigned int ctrl, int rounds)
|
||||||
|
{
|
||||||
|
const char *algoid;
|
||||||
|
+#if defined(CRYPT_GENSALT_OUTPUT_SIZE) && CRYPT_GENSALT_OUTPUT_SIZE > 64
|
||||||
|
+ /* Strings returned by crypt_gensalt_rn will be no longer than this. */
|
||||||
|
+ char salt[CRYPT_GENSALT_OUTPUT_SIZE];
|
||||||
|
+#else
|
||||||
|
char salt[64]; /* contains rounds number + max 16 bytes of salt + algo id */
|
||||||
|
+#endif
|
||||||
|
char *sp;
|
||||||
|
#ifdef HAVE_CRYPT_R
|
||||||
|
struct crypt_data *cdata = NULL;
|
||||||
|
@@ -406,6 +411,13 @@ PAMH_ARG_DECL(char * create_password_has
|
||||||
|
return crypted;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if defined(CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY) && CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY
|
||||||
|
+ /*
|
||||||
|
+ * Any version of libcrypt supporting auto entropy is
|
||||||
|
+ * guaranteed to have crypt_gensalt_rn().
|
||||||
|
+ */
|
||||||
|
+ sp = crypt_gensalt_rn(algoid, rounds, NULL, 0, salt, sizeof(salt));
|
||||||
|
+#else
|
||||||
|
#ifdef HAVE_CRYPT_GENSALT_R
|
||||||
|
if (on(UNIX_BLOWFISH_PASS, ctrl)) {
|
||||||
|
char entropy[17];
|
||||||
|
@@ -423,6 +435,7 @@ PAMH_ARG_DECL(char * create_password_has
|
||||||
|
#ifdef HAVE_CRYPT_GENSALT_R
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
+#endif /* CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY */
|
||||||
|
#ifdef HAVE_CRYPT_R
|
||||||
|
sp = NULL;
|
||||||
|
cdata = malloc(sizeof(*cdata));
|
||||||
|
Index: Linux-PAM-1.3.1/modules/pam_unix/support.c
|
||||||
|
===================================================================
|
||||||
|
--- Linux-PAM-1.3.1.orig/modules/pam_unix/support.c
|
||||||
|
+++ Linux-PAM-1.3.1/modules/pam_unix/support.c
|
||||||
|
@@ -175,6 +175,7 @@ int _set_ctrl(pam_handle_t *pamh, int fl
|
||||||
|
|
||||||
|
if (val) {
|
||||||
|
*rounds = strtol(val, NULL, 10);
|
||||||
|
+ set(UNIX_ALGO_ROUNDS, ctrl);
|
||||||
|
free (val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -254,11 +255,13 @@ int _set_ctrl(pam_handle_t *pamh, int fl
|
||||||
|
if (*rounds < 4 || *rounds > 31)
|
||||||
|
*rounds = 5;
|
||||||
|
} else if (on(UNIX_SHA256_PASS, ctrl) || on(UNIX_SHA512_PASS, ctrl)) {
|
||||||
|
- if ((*rounds < 1000) || (*rounds == INT_MAX))
|
||||||
|
+ if ((*rounds < 1000) || (*rounds == INT_MAX)) {
|
||||||
|
/* don't care about bogus values */
|
||||||
|
+ *rounds = 0;
|
||||||
|
unset(UNIX_ALGO_ROUNDS, ctrl);
|
||||||
|
- if (*rounds >= 10000000)
|
||||||
|
+ } else if (*rounds >= 10000000) {
|
||||||
|
*rounds = 9999999;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
4
pam.spec
4
pam.spec
@ -48,6 +48,8 @@ Patch35: pam-1.3.1-console-build.patch
|
|||||||
Patch36: pam-1.3.1-unix-remove-obsolete-_unix_read_password-prototype.patch
|
Patch36: pam-1.3.1-unix-remove-obsolete-_unix_read_password-prototype.patch
|
||||||
# https://github.com/linux-pam/linux-pam/commit/f7abb8c1ef3aa31e6c2564a8aaf69683a77c2016.patch
|
# https://github.com/linux-pam/linux-pam/commit/f7abb8c1ef3aa31e6c2564a8aaf69683a77c2016.patch
|
||||||
Patch37: pam-1.3.1-unix-bcrypt_b.patch
|
Patch37: pam-1.3.1-unix-bcrypt_b.patch
|
||||||
|
# https://github.com/linux-pam/linux-pam/commit/dce80b3f11b3c3aa137d18f22699809094dd64b6
|
||||||
|
Patch38: pam-1.3.1-unix-gensalt-autoentropy.patch
|
||||||
|
|
||||||
%global _pamlibdir %{_libdir}
|
%global _pamlibdir %{_libdir}
|
||||||
%global _moduledir %{_libdir}/security
|
%global _moduledir %{_libdir}/security
|
||||||
@ -133,6 +135,7 @@ cp %{SOURCE18} .
|
|||||||
%patch35 -p1 -b .console-build
|
%patch35 -p1 -b .console-build
|
||||||
%patch36 -p1 -b .remove-prototype
|
%patch36 -p1 -b .remove-prototype
|
||||||
%patch37 -p1 -b .bcrypt_b
|
%patch37 -p1 -b .bcrypt_b
|
||||||
|
%patch38 -p1 -b .gensalt-autoentropy
|
||||||
|
|
||||||
autoreconf -i
|
autoreconf -i
|
||||||
|
|
||||||
@ -378,6 +381,7 @@ done
|
|||||||
* Fri Nov 23 2018 Björn Esser <besser82@fedoraproject.org> - 1.3.1-9
|
* Fri Nov 23 2018 Björn Esser <besser82@fedoraproject.org> - 1.3.1-9
|
||||||
- Backport upstream commit removing an obsolete prototype
|
- Backport upstream commit removing an obsolete prototype
|
||||||
- Backport upstream commit preferring bcrypt_b ($2b$) for blowfish
|
- Backport upstream commit preferring bcrypt_b ($2b$) for blowfish
|
||||||
|
- Backport upstream commit preferring gensalt with autoentropy
|
||||||
|
|
||||||
* Fri Nov 16 2018 Björn Esser <besser82@fedoraproject.org> - 1.3.1-8
|
* Fri Nov 16 2018 Björn Esser <besser82@fedoraproject.org> - 1.3.1-8
|
||||||
- Use %%ldconfig_scriptlets
|
- Use %%ldconfig_scriptlets
|
||||||
|
Loading…
Reference in New Issue
Block a user