fix dereference in pam_env
fix wrong parse of user@host pattern in pam_access (#732081)
This commit is contained in:
parent
05c4e69a7b
commit
9f29655908
35
pam-1.1.4-access-split.patch
Normal file
35
pam-1.1.4-access-split.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
commit 61f4f06abc9b8fcb3c478fa430b52499fd2ca300
|
||||||
|
Author: Tomas Mraz <tmraz@fedoraproject.org>
|
||||||
|
Date: Thu Aug 25 15:48:51 2011 +0200
|
||||||
|
|
||||||
|
Fix the split on @ in the user field. (Red Hat Bug #732081)
|
||||||
|
|
||||||
|
diff --git a/ChangeLog b/ChangeLog
|
||||||
|
index 7563098..b4f1ef8 100644
|
||||||
|
--- a/ChangeLog
|
||||||
|
+++ b/ChangeLog
|
||||||
|
@@ -1,3 +1,8 @@
|
||||||
|
+2011-08-25 Tomas Mraz <tm@t8m.info>
|
||||||
|
+
|
||||||
|
+ * modules/pam_access/pam_access.c (user_match): Fix the split
|
||||||
|
+ on @ in the user field. (Red Hat Bug #732081)
|
||||||
|
+
|
||||||
|
2011-08-23 Tomas Mraz <tm@t8m.info>
|
||||||
|
|
||||||
|
* modules/pam_env/pam_env.c (_pam_parse): Fix missing dereference.
|
||||||
|
diff --git a/modules/pam_access/pam_access.c b/modules/pam_access/pam_access.c
|
||||||
|
index 0eb1e8c..472116c 100644
|
||||||
|
--- a/modules/pam_access/pam_access.c
|
||||||
|
+++ b/modules/pam_access/pam_access.c
|
||||||
|
@@ -521,7 +521,10 @@ user_match (pam_handle_t *pamh, char *tok, struct login_info *item)
|
||||||
|
* name of the user's primary group.
|
||||||
|
*/
|
||||||
|
|
||||||
|
- if (tok[0] != '@' && (at = strchr(tok + 1, '@')) != 0) {
|
||||||
|
+ /* Try to split on a pattern (@*[^@]+)(@+.*) */
|
||||||
|
+ for (at = tok; *at == '@'; ++at);
|
||||||
|
+
|
||||||
|
+ if ((at = strchr(at, '@')) != NULL) {
|
||||||
|
/* split user@host pattern */
|
||||||
|
if (item->hostname == NULL)
|
||||||
|
return NO;
|
72
pam-1.1.4-console-fixes.patch
Normal file
72
pam-1.1.4-console-fixes.patch
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
diff -up Linux-PAM-1.1.4/modules/pam_console/handlers.c.console-fixes Linux-PAM-1.1.4/modules/pam_console/handlers.c
|
||||||
|
--- Linux-PAM-1.1.4/modules/pam_console/handlers.c.console-fixes 2008-12-16 13:37:52.000000000 +0100
|
||||||
|
+++ Linux-PAM-1.1.4/modules/pam_console/handlers.c 2011-07-15 14:49:39.000000000 +0200
|
||||||
|
@@ -172,13 +172,13 @@ call_exec(struct console_handler *handle
|
||||||
|
const char *flagptr;
|
||||||
|
const char **argv;
|
||||||
|
int i = 0;
|
||||||
|
- argv = malloc(sizeof(*argv)*nparams+2);
|
||||||
|
-
|
||||||
|
+ argv = malloc(sizeof(*argv)*(nparams+2));
|
||||||
|
+
|
||||||
|
if (argv == NULL)
|
||||||
|
return;
|
||||||
|
-
|
||||||
|
+
|
||||||
|
argv[i++] = handler->executable;
|
||||||
|
-
|
||||||
|
+
|
||||||
|
for (flagptr = handler->flags; *flagptr != '\0'; flagptr += strlen(flagptr)+1) {
|
||||||
|
switch (testflag(flagptr)) {
|
||||||
|
case HF_LOGFAIL:
|
||||||
|
@@ -231,7 +231,7 @@ execute_handler(pam_handle_t *pamh, stru
|
||||||
|
}
|
||||||
|
|
||||||
|
sighandler = signal(SIGCHLD, SIG_DFL);
|
||||||
|
-
|
||||||
|
+
|
||||||
|
child = fork();
|
||||||
|
switch (child) {
|
||||||
|
case -1:
|
||||||
|
@@ -246,30 +246,32 @@ execute_handler(pam_handle_t *pamh, stru
|
||||||
|
if (!wait_exit) {
|
||||||
|
switch(fork()) {
|
||||||
|
case 0:
|
||||||
|
- exit(0);
|
||||||
|
+ if(setsid() == -1) {
|
||||||
|
+ _exit(255);
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
case -1:
|
||||||
|
- exit(255);
|
||||||
|
+ _exit(255);
|
||||||
|
default:
|
||||||
|
- if(setsid() == -1) {
|
||||||
|
- exit(255);
|
||||||
|
- }
|
||||||
|
+ _exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (set_uid) {
|
||||||
|
struct passwd *pw;
|
||||||
|
pw = getpwnam(user);
|
||||||
|
if (pw == NULL)
|
||||||
|
- exit(255);
|
||||||
|
+ _exit(255);
|
||||||
|
if (setgid(pw->pw_gid) == -1 ||
|
||||||
|
+ setgroups(0, NULL) == -1 ||
|
||||||
|
setuid(pw->pw_uid) == -1)
|
||||||
|
- exit(255);
|
||||||
|
+ _exit(255);
|
||||||
|
}
|
||||||
|
call_exec(handler, nparams, user, tty);
|
||||||
|
- exit(255);
|
||||||
|
+ _exit(255);
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+
|
||||||
|
waitpid(child, &rv, 0);
|
||||||
|
|
||||||
|
if (sighandler != SIG_ERR)
|
49
pam-1.1.4-env-deref.patch
Normal file
49
pam-1.1.4-env-deref.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
commit ca6fbe92205fe5b4acf2e92e4c2bf73327b26780
|
||||||
|
Author: Tomas Mraz <tmraz@fedoraproject.org>
|
||||||
|
Date: Tue Aug 23 12:42:32 2011 +0200
|
||||||
|
|
||||||
|
Fix missing dereference.
|
||||||
|
|
||||||
|
diff --git a/ChangeLog b/ChangeLog
|
||||||
|
index 07f120f..7563098 100644
|
||||||
|
--- a/ChangeLog
|
||||||
|
+++ b/ChangeLog
|
||||||
|
@@ -1,3 +1,7 @@
|
||||||
|
+2011-08-23 Tomas Mraz <tm@t8m.info>
|
||||||
|
+
|
||||||
|
+ * modules/pam_env/pam_env.c (_pam_parse): Fix missing dereference.
|
||||||
|
+
|
||||||
|
2011-06-22 Thorsten Kukuk <kukuk@thkukuk.de>
|
||||||
|
|
||||||
|
* release version 1.1.4
|
||||||
|
diff --git a/modules/pam_env/pam_env.c b/modules/pam_env/pam_env.c
|
||||||
|
index 865fbaf..1ec01ca 100644
|
||||||
|
--- a/modules/pam_env/pam_env.c
|
||||||
|
+++ b/modules/pam_env/pam_env.c
|
||||||
|
@@ -99,7 +99,7 @@ _pam_parse (const pam_handle_t *pamh, int argc, const char **argv,
|
||||||
|
if (!strcmp(*argv,"debug"))
|
||||||
|
ctrl |= PAM_DEBUG_ARG;
|
||||||
|
else if (!strncmp(*argv,"conffile=",9)) {
|
||||||
|
- if (*argv+9 == '\0') {
|
||||||
|
+ if ((*argv)[9] == '\0') {
|
||||||
|
pam_syslog(pamh, LOG_ERR,
|
||||||
|
"conffile= specification missing argument - ignored");
|
||||||
|
} else {
|
||||||
|
@@ -107,7 +107,7 @@ _pam_parse (const pam_handle_t *pamh, int argc, const char **argv,
|
||||||
|
D(("new Configuration File: %s", *conffile));
|
||||||
|
}
|
||||||
|
} else if (!strncmp(*argv,"envfile=",8)) {
|
||||||
|
- if (*argv+8 == '\0') {
|
||||||
|
+ if ((*argv)[8] == '\0') {
|
||||||
|
pam_syslog (pamh, LOG_ERR,
|
||||||
|
"envfile= specification missing argument - ignored");
|
||||||
|
} else {
|
||||||
|
@@ -115,7 +115,7 @@ _pam_parse (const pam_handle_t *pamh, int argc, const char **argv,
|
||||||
|
D(("new Env File: %s", *envfile));
|
||||||
|
}
|
||||||
|
} else if (!strncmp(*argv,"user_envfile=",13)) {
|
||||||
|
- if (*argv+13 == '\0') {
|
||||||
|
+ if ((*argv)[13] == '\0') {
|
||||||
|
pam_syslog (pamh, LOG_ERR,
|
||||||
|
"user_envfile= specification missing argument - ignored");
|
||||||
|
} else {
|
18
pam.spec
18
pam.spec
@ -4,8 +4,9 @@ Summary: An extensible library which provides authentication for applications
|
|||||||
Name: pam
|
Name: pam
|
||||||
Version: 1.1.4
|
Version: 1.1.4
|
||||||
Release: 2%{?dist}
|
Release: 2%{?dist}
|
||||||
# The library is BSD licensed with option to relicense as GPLv2+ - this option is redundant
|
# The library is BSD licensed with option to relicense as GPLv2+
|
||||||
# as the BSD license allows that anyway. pam_timestamp and pam_console modules are GPLv2+,
|
# - this option is redundant as the BSD license allows that anyway.
|
||||||
|
# pam_timestamp, pam_loginuid, and pam_console modules are GPLv2+.
|
||||||
License: BSD and GPLv2+
|
License: BSD and GPLv2+
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
Source0: http://ftp.us.kernel.org/pub/linux/libs/pam/library/Linux-PAM-%{version}.tar.bz2
|
Source0: http://ftp.us.kernel.org/pub/linux/libs/pam/library/Linux-PAM-%{version}.tar.bz2
|
||||||
@ -35,6 +36,8 @@ Patch10: pam-1.1.3-nouserenv.patch
|
|||||||
Patch11: pam-1.1.3-console-abstract.patch
|
Patch11: pam-1.1.3-console-abstract.patch
|
||||||
Patch12: pam-1.1.3-faillock-screensaver.patch
|
Patch12: pam-1.1.3-faillock-screensaver.patch
|
||||||
# Upstreamed patches
|
# Upstreamed patches
|
||||||
|
Patch30: pam-1.1.4-env-deref.patch
|
||||||
|
Patch31: pam-1.1.4-access-split.patch
|
||||||
|
|
||||||
%define _sbindir /sbin
|
%define _sbindir /sbin
|
||||||
%define _moduledir /%{_lib}/security
|
%define _moduledir /%{_lib}/security
|
||||||
@ -49,7 +52,7 @@ Patch12: pam-1.1.3-faillock-screensaver.patch
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
Requires: cracklib, cracklib-dicts >= 2.8
|
Requires: cracklib-dicts >= 2.8
|
||||||
Requires(post): coreutils, /sbin/ldconfig
|
Requires(post): coreutils, /sbin/ldconfig
|
||||||
BuildRequires: autoconf >= 2.60
|
BuildRequires: autoconf >= 2.60
|
||||||
BuildRequires: automake, libtool
|
BuildRequires: automake, libtool
|
||||||
@ -80,7 +83,7 @@ having to recompile programs that handle authentication.
|
|||||||
%package devel
|
%package devel
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
Summary: Files needed for developing PAM-aware applications and modules for PAM
|
Summary: Files needed for developing PAM-aware applications and modules for PAM
|
||||||
Requires: pam = %{version}-%{release}
|
Requires: pam%{?_isa} = %{version}-%{release}
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
PAM (Pluggable Authentication Modules) is a system security tool that
|
PAM (Pluggable Authentication Modules) is a system security tool that
|
||||||
@ -106,6 +109,9 @@ mv pam-redhat-%{pam_redhat_version}/* modules
|
|||||||
%patch11 -p1 -b .abstract
|
%patch11 -p1 -b .abstract
|
||||||
%patch12 -p1 -b .screensaver
|
%patch12 -p1 -b .screensaver
|
||||||
|
|
||||||
|
%patch30 -p1 -b .deref
|
||||||
|
%patch31 -p1 -b .split
|
||||||
|
|
||||||
libtoolize -f
|
libtoolize -f
|
||||||
autoreconf
|
autoreconf
|
||||||
|
|
||||||
@ -359,6 +365,10 @@ fi
|
|||||||
%doc doc/adg/*.txt doc/adg/html
|
%doc doc/adg/*.txt doc/adg/html
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Aug 25 2011 Tomas Mraz <tmraz@redhat.com> 1.1.4-3
|
||||||
|
- fix dereference in pam_env
|
||||||
|
- fix wrong parse of user@host pattern in pam_access (#732081)
|
||||||
|
|
||||||
* Fri Jul 15 2011 Tomas Mraz <tmraz@redhat.com> 1.1.4-2
|
* Fri Jul 15 2011 Tomas Mraz <tmraz@redhat.com> 1.1.4-2
|
||||||
- clear supplementary groups in pam_console handler execution
|
- clear supplementary groups in pam_console handler execution
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user