logo

etc_portage

Unnamed repository; edit this file 'description' to name the repository. git clone https://hacktivis.me/git/etc_portage.git
commit: 103b70baafabfba2e358684ed67875240b3486cf
parent 31cf7b6a8c42cd990149ad7591aef557243dc4ad
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Sun, 27 Feb 2022 03:42:46 +0100

patches/sys-apps/shadow: Remove, has been in a release

Diffstat:

Dpatches/sys-apps/shadow/0001-login-su-Treat-an-empty-passwd-field-as-invalid.patch51---------------------------------------------------
Dpatches/sys-apps/shadow/0002-su-login-Introduce-PREVENT_NO_AUTH.patch104-------------------------------------------------------------------------------
2 files changed, 0 insertions(+), 155 deletions(-)

diff --git a/patches/sys-apps/shadow/0001-login-su-Treat-an-empty-passwd-field-as-invalid.patch b/patches/sys-apps/shadow/0001-login-su-Treat-an-empty-passwd-field-as-invalid.patch @@ -1,51 +0,0 @@ -From 999a428a064222c4fba980baa3b061d39e23ed75 Mon Sep 17 00:00:00 2001 -From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> -Date: Sun, 14 Mar 2021 19:13:13 +0100 -Subject: [PATCH 1/2] login & su: Treat an empty passwd field as invalid -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Otherwise it's treated like the “require no password” clause while it probably -should be treated like a normal su that can't validate anyway. - -A similar change should be done for USE_PAM. ---- - src/login.c | 4 ++++ - src/su.c | 5 +++++ - 2 files changed, 9 insertions(+) - -diff --git a/src/login.c b/src/login.c -index 00508cd5..0c0b5c86 100644 ---- a/src/login.c -+++ b/src/login.c -@@ -978,6 +978,10 @@ int main (int argc, char **argv) - || ('*' == user_passwd[0])) { - failed = true; - } -+ /* Treat empty password field as invalid */ -+ if (strcmp (user_passwd, "") == 0) { -+ failed = true; -+ } - } - - if (strcmp (user_passwd, SHADOW_PASSWD_STRING) == 0) { -diff --git a/src/su.c b/src/su.c -index fc0e826f..638f533f 100644 ---- a/src/su.c -+++ b/src/su.c -@@ -499,6 +499,11 @@ static void check_perms_nopam (const struct passwd *pw) - /*@observer@*/const char *password = pw->pw_passwd; - RETSIGTYPE (*oldsig) (int); - -+ if (strcmp (pw->pw_passwd, "") == 0) { -+ fprintf(stderr, _("Password field is empty, this is invalid.\n")); -+ exit(1); -+ } -+ - if (caller_is_root) { - return; - } --- -2.26.3 - diff --git a/patches/sys-apps/shadow/0002-su-login-Introduce-PREVENT_NO_AUTH.patch b/patches/sys-apps/shadow/0002-su-login-Introduce-PREVENT_NO_AUTH.patch @@ -1,104 +0,0 @@ -From b52ef69b3b8442a77eeb18b7bf8f9b47148d6c34 Mon Sep 17 00:00:00 2001 -From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> -Date: Mon, 15 Mar 2021 10:25:50 +0100 -Subject: [PATCH 2/2] su & login: Introduce PREVENT_NO_AUTH - ---- - etc/login.defs | 9 +++++++++ - lib/getdef.c | 1 + - src/login.c | 13 +++++++++++-- - src/su.c | 20 +++++++++++++++----- - 4 files changed, 36 insertions(+), 7 deletions(-) - -diff --git a/etc/login.defs b/etc/login.defs -index a2f8cd50..f6b613a1 100644 ---- a/etc/login.defs -+++ b/etc/login.defs -@@ -428,3 +428,12 @@ USERGROUPS_ENAB yes - # missing. - # - #FORCE_SHADOW yes -+ -+# -+# Prevents an empty password field to be interpreted as "no authentication -+# required". -+# Set to "yes" to prevent for all accounts -+# Set to "superuser" to prevent for UID 0 / root (default) -+# Set to "no" to not prevent for any account (dangerous, historical default) -+ -+PREVENT_NO_AUTH yes -diff --git a/lib/getdef.c b/lib/getdef.c -index 00f6abfe..d25d13f4 100644 ---- a/lib/getdef.c -+++ b/lib/getdef.c -@@ -149,6 +149,7 @@ static struct itemdef def_table[] = { - {"USE_TCB", NULL}, - #endif - {"FORCE_SHADOW", NULL}, -+ {"PREVENT_NO_AUTH", NULL}, - {NULL, NULL} - }; - -diff --git a/src/login.c b/src/login.c -index 0c0b5c86..be84a884 100644 ---- a/src/login.c -+++ b/src/login.c -@@ -978,9 +978,18 @@ int main (int argc, char **argv) - || ('*' == user_passwd[0])) { - failed = true; - } -- /* Treat empty password field as invalid */ -+ - if (strcmp (user_passwd, "") == 0) { -- failed = true; -+ char *prevent_no_auth = getdef_str("PREVENT_NO_AUTH"); -+ if(prevent_no_auth == NULL) { -+ prevent_no_auth = "superuser"; -+ } -+ if(strcmp(prevent_no_auth, "yes") == 0) { -+ failed = true; -+ } else if( (pwd->pw_uid == 0) -+ && (strcmp(prevent_no_auth, "superuser") == 0)) { -+ failed = true; -+ } - } - } - -diff --git a/src/su.c b/src/su.c -index 638f533f..9cae4b2f 100644 ---- a/src/su.c -+++ b/src/su.c -@@ -499,15 +499,25 @@ static void check_perms_nopam (const struct passwd *pw) - /*@observer@*/const char *password = pw->pw_passwd; - RETSIGTYPE (*oldsig) (int); - -- if (strcmp (pw->pw_passwd, "") == 0) { -- fprintf(stderr, _("Password field is empty, this is invalid.\n")); -- exit(1); -- } -- - if (caller_is_root) { - return; - } - -+ if (strcmp (pw->pw_passwd, "") == 0) { -+ char *prevent_no_auth = getdef_str("PREVENT_NO_AUTH"); -+ if(prevent_no_auth == NULL) { -+ prevent_no_auth = "superuser"; -+ } -+ if(strcmp(prevent_no_auth, "yes") == 0) { -+ fprintf(stderr, _("Password field is empty, this is forbidden for all accounts.\n")); -+ exit(1); -+ } else if( (pw->pw_uid == 0) -+ && (strcmp(prevent_no_auth, "superuser") == 0)) { -+ fprintf(stderr, _("Password field is empty, this is forbidden for super-user.\n")); -+ exit(1); -+ } -+ } -+ - /* - * BSD systems only allow "wheel" to SU to root. USG systems don't, - * so we make this a configurable option. --- -2.26.3 -