- update to 1.8
- temporarily bundling the krb5-appl package (split upstream as of 1.8) until its package review is complete - profile.d scriptlets are now only needed by -workstation-clients - adjust paths in init scripts - drop upstreamed fix for KDC denial of service (CVE-2010-0283) - drop patch to check the user's password correctly using crypt(), which isn't a code path we hit when we're using PAM
This commit is contained in:
parent
9c84ef7b56
commit
75b08040ff
@ -31,3 +31,8 @@ krb5-1.7-pdf.tar.gz
|
|||||||
krb5-1.7.1.tar.gz
|
krb5-1.7.1.tar.gz
|
||||||
krb5-1.7.1.tar.gz.asc
|
krb5-1.7.1.tar.gz.asc
|
||||||
krb5-1.7.1-pdf.tar.gz
|
krb5-1.7.1-pdf.tar.gz
|
||||||
|
krb5-1.8.tar.gz
|
||||||
|
krb5-1.8.tar.gz.asc
|
||||||
|
krb5-appl-1.0.tar.gz
|
||||||
|
krb5-appl-1.0.tar.gz.asc
|
||||||
|
krb5-1.8-pdf.tar.gz
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
diff --git a/src/kdc/do_as_req.c b/src/kdc/do_as_req.c
|
|
||||||
index 52fbda5..680e6a1 100644
|
|
||||||
--- a/src/kdc/do_as_req.c
|
|
||||||
+++ b/src/kdc/do_as_req.c
|
|
||||||
@@ -137,6 +137,11 @@ process_as_req(krb5_kdc_req *request, krb5_data *req_pkt,
|
|
||||||
session_key.contents = 0;
|
|
||||||
enc_tkt_reply.authorization_data = NULL;
|
|
||||||
|
|
||||||
+ if (request->msg_type != KRB5_AS_REQ) {
|
|
||||||
+ status = "msg_type mismatch";
|
|
||||||
+ errcode = KRB5_BADMSGTYPE;
|
|
||||||
+ goto errout;
|
|
||||||
+ }
|
|
||||||
errcode = kdc_make_rstate(&state);
|
|
||||||
if (errcode != 0) {
|
|
||||||
status = "constructing state";
|
|
||||||
diff --git a/src/kdc/do_tgs_req.c b/src/kdc/do_tgs_req.c
|
|
||||||
index 12180ff..c8cf692 100644
|
|
||||||
--- a/src/kdc/do_tgs_req.c
|
|
||||||
+++ b/src/kdc/do_tgs_req.c
|
|
||||||
@@ -135,6 +135,8 @@ process_tgs_req(krb5_data *pkt, const krb5_fulladdr *from,
|
|
||||||
retval = decode_krb5_tgs_req(pkt, &request);
|
|
||||||
if (retval)
|
|
||||||
return retval;
|
|
||||||
+ if (request->msg_type != KRB5_TGS_REQ)
|
|
||||||
+ return KRB5_BADMSGTYPE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* setup_server_realm() sets up the global realm-specific data pointer.
|
|
||||||
diff --git a/src/kdc/fast_util.c b/src/kdc/fast_util.c
|
|
||||||
index d88e0cb..2639047 100644
|
|
||||||
--- a/src/kdc/fast_util.c
|
|
||||||
+++ b/src/kdc/fast_util.c
|
|
||||||
@@ -384,7 +384,7 @@ krb5_error_code kdc_fast_handle_error
|
|
||||||
krb5_data *encoded_e_data = NULL;
|
|
||||||
|
|
||||||
memset(outer_pa, 0, sizeof(outer_pa));
|
|
||||||
- if (!state->armor_key)
|
|
||||||
+ if (!state || !state->armor_key)
|
|
||||||
return 0;
|
|
||||||
fx_error = *err;
|
|
||||||
fx_error.e_data.data = NULL;
|
|
@ -33,7 +33,7 @@
|
|||||||
# Source function library.
|
# Source function library.
|
||||||
. /etc/init.d/functions
|
. /etc/init.d/functions
|
||||||
prog="Kerberos 5 Admin Server"
|
prog="Kerberos 5 Admin Server"
|
||||||
kadmind=/usr/kerberos/sbin/kadmind
|
kadmind=/usr/sbin/kadmind
|
||||||
|
|
||||||
RETVAL=0
|
RETVAL=0
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
RETVAL=0
|
RETVAL=0
|
||||||
prog="Kerberos 5 Propagation Server"
|
prog="Kerberos 5 Propagation Server"
|
||||||
kpropd=/usr/kerberos/sbin/kpropd
|
kpropd=/usr/sbin/kpropd
|
||||||
|
|
||||||
# Shell functions to cut down on useless shell instances.
|
# Shell functions to cut down on useless shell instances.
|
||||||
start() {
|
start() {
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
The idea is to not complain about problems in the default ticket file if we
|
|
||||||
couldn't read it, because the client would be able to tell if it's there or
|
|
||||||
not. Still needs work, I think.
|
|
||||||
--- krb5-1.3/src/clients/ksu/ccache.c
|
|
||||||
+++ krb5-1.3/src/clients/ksu/ccache.c
|
|
||||||
@@ -77,7 +77,7 @@
|
|
||||||
cc_def_name = krb5_cc_get_name(context, cc_def);
|
|
||||||
cc_other_name = krb5_cc_get_name(context, *cc_other);
|
|
||||||
|
|
||||||
- if ( ! stat(cc_def_name, &st_temp)){
|
|
||||||
+ if ( ! access(cc_def_name, R_OK) && ! stat(cc_def_name, &st_temp)){
|
|
||||||
if((retval = krb5_get_nonexp_tkts(context,cc_def,&cc_def_creds_arr))){
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
--- krb5-1.3/src/clients/ksu/heuristic.c
|
|
||||||
+++ krb5-1.3/src/clients/ksu/heuristic.c
|
|
||||||
@@ -412,7 +412,7 @@
|
|
||||||
|
|
||||||
cc_source_name = krb5_cc_get_name(context, cc);
|
|
||||||
|
|
||||||
- if ( ! stat(cc_source_name, &st_temp)){
|
|
||||||
+ if ( ! access(cc_source_name, F_OK | R_OK) && ! stat(cc_source_name, &st_temp)){
|
|
||||||
|
|
||||||
retval = find_ticket(context, cc, client, end_server, &temp_found);
|
|
||||||
if (retval)
|
|
||||||
@@ -572,7 +572,7 @@
|
|
||||||
cc_source_name = krb5_cc_get_name(context, cc_source);
|
|
||||||
|
|
||||||
|
|
||||||
- if (! stat(cc_source_name, &st_temp)) {
|
|
||||||
+ if (! access(cc_source_name, F_OK | R_OK) && ! stat(cc_source_name, &st_temp)) {
|
|
||||||
retval = krb5_cc_get_principal(context, cc_source, &cc_def_princ);
|
|
||||||
if (retval)
|
|
||||||
return retval;
|
|
||||||
--- krb5-1.3/src/clients/ksu/main.c
|
|
||||||
+++ krb5-1.3/src/clients/ksu/main.c
|
|
||||||
@@ -263,7 +263,7 @@
|
|
||||||
if ( strchr(cc_source_tag, ':')){
|
|
||||||
cc_source_tag_tmp = strchr(cc_source_tag, ':') + 1;
|
|
||||||
|
|
||||||
- if( stat( cc_source_tag_tmp, &st_temp)){
|
|
||||||
+ if( access( cc_source_tag_tmp, F_OK | R_OK) || stat( cc_source_tag_tmp, &st_temp)){
|
|
||||||
com_err (prog_name, errno,
|
|
||||||
"while looking for credentials file %s",
|
|
||||||
cc_source_tag_tmp);
|
|
@ -1,14 +0,0 @@
|
|||||||
Set the default PATH to the one set by login, with the addition of the
|
|
||||||
/usr/X11R6/bin to the end of the list.
|
|
||||||
|
|
||||||
--- krb5-1.5/src/clients/ksu/Makefile.in 2006-05-24 17:19:23.000000000 -0400
|
|
||||||
+++ krb5-1.5/src/clients/ksu/Makefile.in 2006-07-05 14:24:41.000000000 -0400
|
|
||||||
@@ -2,7 +2,7 @@
|
|
||||||
myfulldir=clients/ksu
|
|
||||||
mydir=clients/ksu
|
|
||||||
BUILDTOP=$(REL)..$(S)..
|
|
||||||
-DEFINES = -DGET_TGT_VIA_PASSWD -DPRINC_LOOK_AHEAD -DCMD_PATH='"/bin /local/bin"'
|
|
||||||
+DEFINES = -DGET_TGT_VIA_PASSWD -DPRINC_LOOK_AHEAD -DCMD_PATH='"/usr/local/sbin /usr/local/bin /sbin /usr/sbin /bin /usr/bin /usr/X11R6/bin"'
|
|
||||||
DEFS=
|
|
||||||
|
|
||||||
PROG_LIBPATH=-L$(TOPLIBD)
|
|
@ -1,28 +0,0 @@
|
|||||||
The local crypt() may support hash types which use more than the first 8
|
|
||||||
characters. It also doesn't modify the input string, so we should just
|
|
||||||
stop truncating it. Are there platforms where the input string *is* modified?
|
|
||||||
|
|
||||||
--- krb5-1.2.7/src/appl/bsd/login.c 2005-11-15 16:20:34.000000000 -0500
|
|
||||||
+++ krb5-1.2.7/src/appl/bsd/login.c 2005-11-15 16:20:29.000000000 -0500
|
|
||||||
@@ -461,17 +461,14 @@
|
|
||||||
static int unix_passwd_okay (pass)
|
|
||||||
char *pass;
|
|
||||||
{
|
|
||||||
- char user_pwcopy[9], *namep;
|
|
||||||
+ char *namep;
|
|
||||||
char *crypt ();
|
|
||||||
|
|
||||||
assert (pwd != 0);
|
|
||||||
|
|
||||||
- /* copy the first 8 chars of the password for unix crypt */
|
|
||||||
- strncpy(user_pwcopy, pass, sizeof(user_pwcopy));
|
|
||||||
- user_pwcopy[sizeof(user_pwcopy) - 1]='\0';
|
|
||||||
- namep = crypt(user_pwcopy, salt);
|
|
||||||
- memset (user_pwcopy, 0, sizeof(user_pwcopy));
|
|
||||||
- /* ... and wipe the copy now that we have the string */
|
|
||||||
+ namep = crypt(pass, salt);
|
|
||||||
+ if (strlen(namep) < 13)
|
|
||||||
+ return 0;
|
|
||||||
|
|
||||||
/* verify the local password string */
|
|
||||||
#ifdef HAVE_SHADOW
|
|
@ -1,69 +0,0 @@
|
|||||||
Treat 'nsAccountLock: true' the same as 'loginDisabled: true'. Updated from
|
|
||||||
original version filed as RT#5891.
|
|
||||||
|
|
||||||
diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
|
||||||
--- krb5-1.7/src/aclocal.m4 2009-06-04 14:38:07.000000000 -0400
|
|
||||||
+++ krb5-1.7/src/aclocal.m4 2009-06-04 14:38:07.000000000 -0400
|
|
||||||
@@ -1746,6 +1746,12 @@ AC_ARG_WITH([edirectory],
|
|
||||||
yes | no) ;;
|
|
||||||
*) AC_MSG_ERROR(Invalid option value --with-edirectory="$withval") ;;
|
|
||||||
esac], with_edirectory=no)dnl
|
|
||||||
+AC_ARG_WITH([dirsrv],
|
|
||||||
+[ --with-dirsrv compile 389/Red Hat/Fedora/Netscape Directory Server database backend module],
|
|
||||||
+[case "$withval" in
|
|
||||||
+ yes | no) ;;
|
|
||||||
+ *) AC_MSG_ERROR(Invalid option value --with-dirsrv="$withval") ;;
|
|
||||||
+esac], with_dirsrv=no)dnl
|
|
||||||
|
|
||||||
if test $with_ldap = yes; then
|
|
||||||
if test $with_edirectory = yes; then
|
|
||||||
@@ -1757,6 +1763,10 @@ elif test $with_edirectory = yes; then
|
|
||||||
AC_MSG_NOTICE(enabling eDirectory database backend module support)
|
|
||||||
OPENLDAP_PLUGIN=yes
|
|
||||||
AC_DEFINE(HAVE_EDIRECTORY,1,[Define if LDAP KDB interface should assume eDirectory.])
|
|
||||||
+elif test $with_dirsrv = yes; then
|
|
||||||
+ AC_MSG_NOTICE(enabling 389/Red Hat/Fedora/Netscape Directory Server database backend module support)
|
|
||||||
+ OPENLDAP_PLUGIN=yes
|
|
||||||
+ AC_DEFINE(HAVE_DIRSRV,1,[Define if LDAP KDB interface should assume RHDS/FDS/NDS.])
|
|
||||||
else
|
|
||||||
: # neither enabled
|
|
||||||
dnl AC_MSG_NOTICE(disabling ldap backend module support)
|
|
||||||
diff -up krb5-1.7/src/plugins/kdb/ldap/libkdb_ldap/ldap_misc.c krb5-1.7/src/plugins/kdb/ldap/libkdb_ldap/ldap_misc.c
|
|
||||||
--- krb5-1.7/src/plugins/kdb/ldap/libkdb_ldap/ldap_misc.c 2009-02-18 13:14:48.000000000 -0500
|
|
||||||
+++ krb5-1.7/src/plugins/kdb/ldap/libkdb_ldap/ldap_misc.c 2009-06-04 14:38:07.000000000 -0400
|
|
||||||
@@ -2157,6 +2157,22 @@ populate_krb5_db_entry (krb5_context con
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
+#ifdef HAVE_DIRSRV
|
|
||||||
+ {
|
|
||||||
+ krb5_timestamp expiretime=0;
|
|
||||||
+ char *is_login_disabled=NULL;
|
|
||||||
+
|
|
||||||
+ /* LOGIN DISABLED */
|
|
||||||
+ if ((st=krb5_ldap_get_string(ld, ent, "nsaccountlock", &is_login_disabled,
|
|
||||||
+ &attr_present)) != 0)
|
|
||||||
+ goto cleanup;
|
|
||||||
+ if (attr_present == TRUE) {
|
|
||||||
+ if (strcasecmp(is_login_disabled, "TRUE")== 0)
|
|
||||||
+ entry->attributes |= KRB5_KDB_DISALLOW_ALL_TIX;
|
|
||||||
+ free (is_login_disabled);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
if ((st=krb5_read_tkt_policy (context, ldap_context, entry, tktpolname)) !=0)
|
|
||||||
goto cleanup;
|
|
||||||
diff -up krb5-1.7/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal.c krb5-1.7/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal.c
|
|
||||||
--- krb5-1.7/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal.c 2009-04-14 17:07:34.000000000 -0400
|
|
||||||
+++ krb5-1.7/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal.c 2009-06-04 14:38:07.000000000 -0400
|
|
||||||
@@ -58,6 +58,9 @@ char *principal_attributes[] = { "kr
|
|
||||||
"loginexpirationtime",
|
|
||||||
"logindisabled",
|
|
||||||
#endif
|
|
||||||
+#ifdef HAVE_DIRSRV
|
|
||||||
+ "nsaccountlock",
|
|
||||||
+#endif
|
|
||||||
"krbLastPwdChange",
|
|
||||||
"krbExtraData",
|
|
||||||
"krbObjectReferences",
|
|
@ -1,17 +0,0 @@
|
|||||||
Don't warn of expiration reported the new way if it's more than a week from
|
|
||||||
now, for consistency with the code that handles expiration times reported the
|
|
||||||
old way.
|
|
||||||
|
|
||||||
diff -up krb5-1.7/src/lib/krb5/krb/gic_pwd.c krb5-1.7/src/lib/krb5/krb/gic_pwd.c
|
|
||||||
--- krb5-1.7/src/lib/krb5/krb/gic_pwd.c 2010-01-18 11:12:02.000000000 -0500
|
|
||||||
+++ krb5-1.7/src/lib/krb5/krb/gic_pwd.c 2010-01-18 11:11:50.000000000 -0500
|
|
||||||
@@ -389,7 +389,8 @@ cleanup:
|
|
||||||
delta / 86400, ts);
|
|
||||||
/* ignore an error here */
|
|
||||||
/* PROMPTER_INVOCATION */
|
|
||||||
- (*prompter)(context, data, 0, banner, 0, 0);
|
|
||||||
+ if (delta < 86400 * 7)
|
|
||||||
+ (*prompter)(context, data, 0, banner, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
Use an in-memory ccache to silence a compiler warning.
|
|
||||||
|
|
||||||
diff -up krb5-1.7/src/slave/kprop.c krb5-1.7/src/slave/kprop.c
|
|
||||||
--- krb5-1.7/src/slave/kprop.c 2008-12-01 12:09:59.000000000 -0500
|
|
||||||
+++ krb5-1.7/src/slave/kprop.c 2009-06-04 14:14:10.000000000 -0400
|
|
||||||
@@ -211,9 +211,8 @@ void PRS(argc, argv)
|
|
||||||
void get_tickets(context)
|
|
||||||
krb5_context context;
|
|
||||||
{
|
|
||||||
- char buf[BUFSIZ];
|
|
||||||
+ char buf[] = "MEMORY:_kproptkt";
|
|
||||||
krb5_error_code retval;
|
|
||||||
- static char tkstring[] = "/tmp/kproptktXXXXXX";
|
|
||||||
krb5_keytab keytab = NULL;
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -238,11 +237,8 @@ void get_tickets(context)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
- * Initialize cache file which we're going to be using
|
|
||||||
+ * Initialize an in-memory cache for temporary use
|
|
||||||
*/
|
|
||||||
- (void) mktemp(tkstring);
|
|
||||||
- snprintf(buf, sizeof(buf), "FILE:%s", tkstring);
|
|
||||||
-
|
|
||||||
retval = krb5_cc_resolve(context, buf, &ccache);
|
|
||||||
if (retval) {
|
|
||||||
com_err(progname, retval, "while opening credential cache %s",
|
|
@ -1,17 +0,0 @@
|
|||||||
This isn't a proper fix (it doesn't actually switch to using the new API),
|
|
||||||
but it'll do for now.
|
|
||||||
diff -up src/plugins/preauth/pkinit/pkinit_crypto_openssl.c src/plugins/preauth/pkinit/pkinit_crypto_openssl.c
|
|
||||||
--- src/plugins/preauth/pkinit/pkinit_crypto_openssl.c.openssl-1.0 2009-01-23 01:51:03.000000000 -0500
|
|
||||||
+++ src/plugins/preauth/pkinit/pkinit_crypto_openssl.c 2009-08-24 11:19:35.000000000 -0400
|
|
||||||
@@ -3652,7 +3652,11 @@ decode_data(unsigned char **out_data, un
|
|
||||||
if (buf == NULL)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
+#if OPENSSL_VERSION_NUMBER < 0x10000000L
|
|
||||||
retval = EVP_PKEY_decrypt(buf, data, (int)data_len, pkey);
|
|
||||||
+#else
|
|
||||||
+ retval = EVP_PKEY_decrypt_old(buf, data, (int)data_len, pkey);
|
|
||||||
+#endif
|
|
||||||
if (retval <= 0) {
|
|
||||||
pkiDebug("unable to decrypt received data (len=%d)\n", data_len);
|
|
||||||
goto cleanup;
|
|
@ -1,14 +0,0 @@
|
|||||||
Check opte->flags instead of options->flags, because we know that opte has
|
|
||||||
been initialized to the library defaults if options was NULL.
|
|
||||||
diff -up krb5-1.7/src/lib/krb5/krb/gic_pwd.c krb5-1.7/src/lib/krb5/krb/gic_pwd.c
|
|
||||||
--- krb5-1.7/src/lib/krb5/krb/gic_pwd.c 2010-01-15 15:07:52.000000000 -0500
|
|
||||||
+++ krb5-1.7/src/lib/krb5/krb/gic_pwd.c 2010-01-15 15:07:56.000000000 -0500
|
|
||||||
@@ -200,7 +200,7 @@ krb5_get_init_creds_password(krb5_contex
|
|
||||||
* to prompt. Prompting is only disabled if the option has been set
|
|
||||||
* and the value has been set to false.
|
|
||||||
*/
|
|
||||||
- if (!(options->flags & KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT))
|
|
||||||
+ if (!(opte->flags & KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
/* ok, we have an expired password. Give the user a few chances
|
|
@ -1,66 +0,0 @@
|
|||||||
Handle ut_tv not always being a struct timeval. RT#6520
|
|
||||||
|
|
||||||
Index: krb5/src/appl/libpty/update_utmp.c
|
|
||||||
===================================================================
|
|
||||||
--- krb5/src/appl/libpty/update_utmp.c (revision 22423)
|
|
||||||
+++ krb5/src/appl/libpty/update_utmp.c (working copy)
|
|
||||||
@@ -291,6 +291,12 @@
|
|
||||||
* The ut_exit field seems to exist in utmp, but not utmpx. The files
|
|
||||||
* utmp and wtmp seem to exist, but not utmpx, or wtmpx.
|
|
||||||
*
|
|
||||||
+ * glibc:
|
|
||||||
+ *
|
|
||||||
+ * The ut_tv field of struct utmp/utmpx may be an anonymous structure
|
|
||||||
+ * containing 32-bit values on systems where time_t is 64 bits. Its
|
|
||||||
+ * fields have the same names, though.
|
|
||||||
+ *
|
|
||||||
* libpty Implementation Decisions:
|
|
||||||
* --------------------------------
|
|
||||||
*
|
|
||||||
@@ -505,6 +511,8 @@
|
|
||||||
const char *line, const char *host, int flags)
|
|
||||||
{
|
|
||||||
PTY_STRUCT_UTMPX utx, *utxtmp, utx2;
|
|
||||||
+ struct timeval ut_tv;
|
|
||||||
+ time_t login_time;
|
|
||||||
const char *cp;
|
|
||||||
size_t len;
|
|
||||||
char utmp_id[5];
|
|
||||||
@@ -577,10 +585,13 @@
|
|
||||||
utxtmp = best_utxent(&utx);
|
|
||||||
|
|
||||||
#ifdef HAVE_SETUTXENT
|
|
||||||
- if (gettimeofday(&utx.ut_tv, NULL))
|
|
||||||
+ if (gettimeofday(&ut_tv, NULL))
|
|
||||||
return errno;
|
|
||||||
+ utx.ut_tv.tv_sec = ut_tv.tv_sec;
|
|
||||||
+ utx.ut_tv.tv_usec = ut_tv.tv_usec;
|
|
||||||
#else
|
|
||||||
- (void)time(&utx.ut_time);
|
|
||||||
+ (void)time(&login_time);
|
|
||||||
+ utx.ut_time = login_time;
|
|
||||||
#endif
|
|
||||||
/*
|
|
||||||
* On what system is there not ut_host? Unix98 doesn't mandate
|
|
||||||
Index: krb5/src/appl/bsd/login.c
|
|
||||||
===================================================================
|
|
||||||
--- krb5/src/appl/bsd/login.c (revision 22423)
|
|
||||||
+++ krb5/src/appl/bsd/login.c (working copy)
|
|
||||||
@@ -719,7 +719,6 @@
|
|
||||||
char *domain, **envinit, *ttyn, *tty;
|
|
||||||
char tbuf[MAXPATHLEN + 2];
|
|
||||||
char *ttyname(), *crypt(), *getpass();
|
|
||||||
- time_t login_time;
|
|
||||||
int retval;
|
|
||||||
int rewrite_ccache = 1; /*try to write out ccache*/
|
|
||||||
#ifdef KRB5_GET_TICKETS
|
|
||||||
@@ -1071,9 +1070,6 @@
|
|
||||||
|
|
||||||
/* nothing else left to fail -- really log in */
|
|
||||||
{
|
|
||||||
- struct utmp utmp;
|
|
||||||
-
|
|
||||||
- login_time = time(&utmp.ut_time);
|
|
||||||
if ((retval = pty_update_utmp(PTY_USER_PROCESS, getpid(), username,
|
|
||||||
ttyn, hostname,
|
|
||||||
PTY_TTYSLOT_USABLE)) < 0)
|
|
@ -1,32 +0,0 @@
|
|||||||
If we encounter any errors reading the user's principal name from the default
|
|
||||||
ccache, fall back to the default of using the current user's name.
|
|
||||||
--- krb5/src/clients/kpasswd/kpasswd.c
|
|
||||||
+++ krb5/src/clients/kpasswd/kpasswd.c
|
|
||||||
@@ -84,21 +84,23 @@ int main(int argc, char *argv[])
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
} else if ((ret = krb5_cc_default(context, &ccache)) != KRB5_CC_NOTFOUND) {
|
|
||||||
+ princ = NULL;
|
|
||||||
+
|
|
||||||
if (ret) {
|
|
||||||
com_err(argv[0], ret, "opening default ccache");
|
|
||||||
- exit(1);
|
|
||||||
}
|
|
||||||
+ else
|
|
||||||
|
|
||||||
if ((ret = krb5_cc_get_principal(context, ccache, &princ))) {
|
|
||||||
com_err(argv[0], ret, "getting principal from ccache");
|
|
||||||
- exit(1);
|
|
||||||
}
|
|
||||||
+ else
|
|
||||||
|
|
||||||
if ((ret = krb5_cc_close(context, ccache))) {
|
|
||||||
com_err(argv[0], ret, "closing ccache");
|
|
||||||
- exit(1);
|
|
||||||
}
|
|
||||||
- } else {
|
|
||||||
+ }
|
|
||||||
+ if (princ == NULL) {
|
|
||||||
get_name_from_passwd_file(argv[0], context, &princ);
|
|
||||||
}
|
|
||||||
|
|
@ -2,29 +2,29 @@ Reference docs don't define what happens if you call krb5_realm_compare() with
|
|||||||
malformed krb5_principal structures. Define a behavior which keeps it from
|
malformed krb5_principal structures. Define a behavior which keeps it from
|
||||||
crashing if applications don't check ahead of time.
|
crashing if applications don't check ahead of time.
|
||||||
|
|
||||||
diff -up krb5-1.7/src/lib/krb5/krb/princ_comp.c krb5-1.7/src/lib/krb5/krb/princ_comp.c
|
diff -up krb5-1.8/src/lib/krb5/krb/princ_comp.c.api krb5-1.8/src/lib/krb5/krb/princ_comp.c
|
||||||
--- krb5-1.7/src/lib/krb5/krb/princ_comp.c 2009-01-03 18:19:42.000000000 -0500
|
--- krb5-1.8/src/lib/krb5/krb/princ_comp.c.api 2009-10-30 20:48:38.000000000 -0400
|
||||||
+++ krb5-1.7/src/lib/krb5/krb/princ_comp.c 2009-06-04 14:31:26.000000000 -0400
|
+++ krb5-1.8/src/lib/krb5/krb/princ_comp.c 2010-03-05 11:00:55.000000000 -0500
|
||||||
@@ -40,6 +40,12 @@ realm_compare_flags(krb5_context context
|
@@ -41,6 +41,12 @@ realm_compare_flags(krb5_context context
|
||||||
const krb5_data *realm1 = krb5_princ_realm(context, princ1);
|
const krb5_data *realm1 = krb5_princ_realm(context, princ1);
|
||||||
const krb5_data *realm2 = krb5_princ_realm(context, princ2);
|
const krb5_data *realm2 = krb5_princ_realm(context, princ2);
|
||||||
|
|
||||||
+ if ((princ1 == NULL) || (princ2 == NULL))
|
+ if ((princ1 == NULL) || (princ2 == NULL))
|
||||||
+ return FALSE;
|
+ return FALSE;
|
||||||
+
|
+
|
||||||
+ if ((realm1 == NULL) || (realm2 == NULL))
|
+ if ((realm1 == NULL) || (realm2 == NULL))
|
||||||
+ return FALSE;
|
+ return FALSE;
|
||||||
+
|
+
|
||||||
if (realm1->length != realm2->length)
|
if (realm1->length != realm2->length)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@@ -91,6 +97,9 @@ krb5_principal_compare_flags(krb5_contex
|
@@ -92,6 +98,9 @@ krb5_principal_compare_flags(krb5_contex
|
||||||
krb5_principal upn2 = NULL;
|
krb5_principal upn2 = NULL;
|
||||||
krb5_boolean ret = FALSE;
|
krb5_boolean ret = FALSE;
|
||||||
|
|
||||||
+ if ((princ1 == NULL) || (princ2 == NULL))
|
+ if ((princ1 == NULL) || (princ2 == NULL))
|
||||||
+ return FALSE;
|
+ return FALSE;
|
||||||
+
|
+
|
||||||
if (flags & KRB5_PRINCIPAL_COMPARE_ENTERPRISE) {
|
if (flags & KRB5_PRINCIPAL_COMPARE_ENTERPRISE) {
|
||||||
/* Treat UPNs as if they were real principals */
|
/* Treat UPNs as if they were real principals */
|
||||||
if (krb5_princ_type(context, princ1) == KRB5_NT_ENTERPRISE_PRINCIPAL) {
|
if (krb5_princ_type(context, princ1) == KRB5_NT_ENTERPRISE_PRINCIPAL) {
|
69
krb5-1.8-dirsrv-accountlock.patch
Normal file
69
krb5-1.8-dirsrv-accountlock.patch
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
Treat 'nsAccountLock: true' the same as 'loginDisabled: true'. Updated from
|
||||||
|
original version filed as RT#5891.
|
||||||
|
|
||||||
|
diff -up krb5-1.8/src/aclocal.m4.dirsrv-accountlock krb5-1.8/src/aclocal.m4
|
||||||
|
--- krb5-1.8/src/aclocal.m4.dirsrv-accountlock 2010-03-05 11:03:09.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/aclocal.m4 2010-03-05 11:03:10.000000000 -0500
|
||||||
|
@@ -1678,6 +1678,12 @@ AC_ARG_WITH([edirectory],
|
||||||
|
yes | no) ;;
|
||||||
|
*) AC_MSG_ERROR(Invalid option value --with-edirectory="$withval") ;;
|
||||||
|
esac], with_edirectory=no)dnl
|
||||||
|
+AC_ARG_WITH([dirsrv],
|
||||||
|
+[ --with-dirsrv compile 389/Red Hat/Fedora/Netscape Directory Server database backend module],
|
||||||
|
+[case "$withval" in
|
||||||
|
+ yes | no) ;;
|
||||||
|
+ *) AC_MSG_ERROR(Invalid option value --with-dirsrv="$withval") ;;
|
||||||
|
+esac], with_dirsrv=no)dnl
|
||||||
|
|
||||||
|
if test $with_ldap = yes; then
|
||||||
|
if test $with_edirectory = yes; then
|
||||||
|
@@ -1689,6 +1695,10 @@ elif test $with_edirectory = yes; then
|
||||||
|
AC_MSG_NOTICE(enabling eDirectory database backend module support)
|
||||||
|
OPENLDAP_PLUGIN=yes
|
||||||
|
AC_DEFINE(HAVE_EDIRECTORY,1,[Define if LDAP KDB interface should assume eDirectory.])
|
||||||
|
+elif test $with_dirsrv = yes; then
|
||||||
|
+ AC_MSG_NOTICE(enabling 389/Red Hat/Fedora/Netscape Directory Server database backend module support)
|
||||||
|
+ OPENLDAP_PLUGIN=yes
|
||||||
|
+ AC_DEFINE(HAVE_DIRSRV,1,[Define if LDAP KDB interface should assume RHDS/FDS/NDS.])
|
||||||
|
else
|
||||||
|
: # neither enabled
|
||||||
|
dnl AC_MSG_NOTICE(disabling ldap backend module support)
|
||||||
|
diff -up krb5-1.8/src/plugins/kdb/ldap/libkdb_ldap/ldap_misc.c.dirsrv-accountlock krb5-1.8/src/plugins/kdb/ldap/libkdb_ldap/ldap_misc.c
|
||||||
|
--- krb5-1.8/src/plugins/kdb/ldap/libkdb_ldap/ldap_misc.c.dirsrv-accountlock 2009-11-24 18:52:25.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/plugins/kdb/ldap/libkdb_ldap/ldap_misc.c 2010-03-05 11:03:10.000000000 -0500
|
||||||
|
@@ -2101,6 +2101,22 @@ populate_krb5_db_entry(krb5_context cont
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
+#ifdef HAVE_DIRSRV
|
||||||
|
+ {
|
||||||
|
+ krb5_timestamp expiretime=0;
|
||||||
|
+ char *is_login_disabled=NULL;
|
||||||
|
+
|
||||||
|
+ /* LOGIN DISABLED */
|
||||||
|
+ if ((st=krb5_ldap_get_string(ld, ent, "nsaccountlock", &is_login_disabled,
|
||||||
|
+ &attr_present)) != 0)
|
||||||
|
+ goto cleanup;
|
||||||
|
+ if (attr_present == TRUE) {
|
||||||
|
+ if (strcasecmp(is_login_disabled, "TRUE")== 0)
|
||||||
|
+ entry->attributes |= KRB5_KDB_DISALLOW_ALL_TIX;
|
||||||
|
+ free (is_login_disabled);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if ((st=krb5_read_tkt_policy (context, ldap_context, entry, tktpolname)) !=0)
|
||||||
|
goto cleanup;
|
||||||
|
diff -up krb5-1.8/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal.c.dirsrv-accountlock krb5-1.8/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal.c
|
||||||
|
--- krb5-1.8/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal.c.dirsrv-accountlock 2009-11-24 18:52:25.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/plugins/kdb/ldap/libkdb_ldap/ldap_principal.c 2010-03-05 11:03:10.000000000 -0500
|
||||||
|
@@ -59,6 +59,9 @@ char *principal_attributes[] = { "kr
|
||||||
|
"loginexpirationtime",
|
||||||
|
"logindisabled",
|
||||||
|
#endif
|
||||||
|
+#ifdef HAVE_DIRSRV
|
||||||
|
+ "nsaccountlock",
|
||||||
|
+#endif
|
||||||
|
"krbLastPwdChange",
|
||||||
|
"krbExtraData",
|
||||||
|
"krbObjectReferences",
|
17
krb5-1.8-exp_warn.patch
Normal file
17
krb5-1.8-exp_warn.patch
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
Don't warn of expiration reported the new way if it's more than a week from
|
||||||
|
now, for consistency with the code that handles expiration times reported the
|
||||||
|
old way.
|
||||||
|
|
||||||
|
diff -up krb5-1.8/src/lib/krb5/krb/gic_pwd.c.exp_warn krb5-1.8/src/lib/krb5/krb/gic_pwd.c
|
||||||
|
--- krb5-1.8/src/lib/krb5/krb/gic_pwd.c.exp_warn 2010-03-05 11:04:10.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/lib/krb5/krb/gic_pwd.c 2010-03-05 11:04:10.000000000 -0500
|
||||||
|
@@ -407,7 +407,8 @@ cleanup:
|
||||||
|
delta / 86400, ts);
|
||||||
|
/* ignore an error here */
|
||||||
|
/* PROMPTER_INVOCATION */
|
||||||
|
- (*prompter)(context, data, 0, banner, 0, 0);
|
||||||
|
+ if (delta < 86400 * 7)
|
||||||
|
+ (*prompter)(context, data, 0, banner, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,9 +1,11 @@
|
|||||||
Sadique Puthen notes that the warning on the client side seems to be correspond
|
Sadique Puthen notes that the warning on the client side seems to be correspond
|
||||||
to the wrong attribute on the KDC. Do what RFC4120 says we should do. RT#5755.
|
to the wrong attribute on the KDC. Do what RFC4120 says we should do. RT#5755.
|
||||||
--- krb5-1.6.2/src/kdc/do_as_req.c 2007-06-25 15:49:06.000000000 -0400
|
|
||||||
+++ krb5-1.6.2/src/kdc/do_as_req.c 2007-06-25 15:49:08.000000000 -0400
|
diff -up krb5-1.8/src/kdc/do_as_req.c.key_exp krb5-1.8/src/kdc/do_as_req.c
|
||||||
@@ -371,7 +371,14 @@ process_as_req(krb5_kdc_req *request, kr
|
--- krb5-1.8/src/kdc/do_as_req.c.key_exp 2010-02-16 17:21:08.000000000 -0500
|
||||||
goto errout;
|
+++ krb5-1.8/src/kdc/do_as_req.c 2010-03-05 11:02:06.000000000 -0500
|
||||||
|
@@ -555,7 +555,14 @@ process_as_req(krb5_kdc_req *request, kr
|
||||||
|
goto errout;
|
||||||
}
|
}
|
||||||
reply_encpart.nonce = request->nonce;
|
reply_encpart.nonce = request->nonce;
|
||||||
- reply_encpart.key_exp = client.expiration;
|
- reply_encpart.key_exp = client.expiration;
|
34
krb5-1.8-kpasswd_ccache.patch
Normal file
34
krb5-1.8-kpasswd_ccache.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
If we encounter any errors reading the user's principal name from the default
|
||||||
|
ccache, fall back to the default of using the current user's name.
|
||||||
|
|
||||||
|
diff -up krb5-1.8/src/clients/kpasswd/kpasswd.c.kpasswd-ccache krb5-1.8/src/clients/kpasswd/kpasswd.c
|
||||||
|
--- krb5-1.8/src/clients/kpasswd/kpasswd.c.kpasswd-ccache 2009-10-30 20:48:38.000000000 -0400
|
||||||
|
+++ krb5-1.8/src/clients/kpasswd/kpasswd.c 2010-03-05 11:04:42.000000000 -0500
|
||||||
|
@@ -85,21 +85,23 @@ int main(int argc, char *argv[])
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
} else if ((ret = krb5_cc_default(context, &ccache)) != KRB5_CC_NOTFOUND) {
|
||||||
|
+ princ = NULL;
|
||||||
|
+
|
||||||
|
if (ret) {
|
||||||
|
com_err(argv[0], ret, "opening default ccache");
|
||||||
|
- exit(1);
|
||||||
|
}
|
||||||
|
+ else
|
||||||
|
|
||||||
|
if ((ret = krb5_cc_get_principal(context, ccache, &princ))) {
|
||||||
|
com_err(argv[0], ret, "getting principal from ccache");
|
||||||
|
- exit(1);
|
||||||
|
}
|
||||||
|
+ else
|
||||||
|
|
||||||
|
if ((ret = krb5_cc_close(context, ccache))) {
|
||||||
|
com_err(argv[0], ret, "closing ccache");
|
||||||
|
- exit(1);
|
||||||
|
}
|
||||||
|
- } else {
|
||||||
|
+ }
|
||||||
|
+ if (princ == NULL) {
|
||||||
|
get_name_from_passwd_file(argv[0], context, &princ);
|
||||||
|
}
|
||||||
|
|
34
krb5-1.8-kpasswd_tcp.patch
Normal file
34
krb5-1.8-kpasswd_tcp.patch
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
Fall back to TCP on kdc-unresolvable/unreachable errors. We still have
|
||||||
|
to wait for UDP to fail, so this might not be ideal. RT #5868.
|
||||||
|
|
||||||
|
diff -up krb5-1.8/src/lib/krb5/os/changepw.c.kpasswd_tcp krb5-1.8/src/lib/krb5/os/changepw.c
|
||||||
|
--- krb5-1.8/src/lib/krb5/os/changepw.c.kpasswd_tcp 2009-12-02 13:06:19.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/lib/krb5/os/changepw.c 2010-03-05 11:02:39.000000000 -0500
|
||||||
|
@@ -270,11 +270,22 @@ change_set_password(krb5_context context
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
))) {
|
||||||
|
-
|
||||||
|
- /*
|
||||||
|
- * Here we may want to switch to TCP on some errors.
|
||||||
|
- * right?
|
||||||
|
- */
|
||||||
|
+ /* if we're not using a stream socket, and it's an error which
|
||||||
|
+ * might reasonably be specific to a datagram "connection", try
|
||||||
|
+ * again with a stream socket */
|
||||||
|
+ if (!useTcp) {
|
||||||
|
+ switch (code) {
|
||||||
|
+ case KRB5_KDC_UNREACH:
|
||||||
|
+ case KRB5_REALM_CANT_RESOLVE:
|
||||||
|
+ case KRB5KRB_ERR_RESPONSE_TOO_BIG:
|
||||||
|
+ /* should we do this for more result codes than these? */
|
||||||
|
+ krb5int_free_addrlist (&al);
|
||||||
|
+ useTcp = 1;
|
||||||
|
+ continue;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
29
krb5-1.8-kprop-mktemp.patch
Normal file
29
krb5-1.8-kprop-mktemp.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
Use an in-memory ccache to silence a compiler warning.
|
||||||
|
|
||||||
|
diff -up krb5-1.8/src/slave/kprop.c.kprop-mktemp krb5-1.8/src/slave/kprop.c
|
||||||
|
--- krb5-1.8/src/slave/kprop.c.kprop-mktemp 2009-11-06 18:29:12.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/slave/kprop.c 2010-03-05 10:59:06.000000000 -0500
|
||||||
|
@@ -202,9 +202,8 @@ void PRS(argc, argv)
|
||||||
|
void get_tickets(context)
|
||||||
|
krb5_context context;
|
||||||
|
{
|
||||||
|
- char buf[BUFSIZ];
|
||||||
|
+ char buf[] = "MEMORY:_kproptkt";
|
||||||
|
krb5_error_code retval;
|
||||||
|
- static char tkstring[] = "/tmp/kproptktXXXXXX";
|
||||||
|
krb5_keytab keytab = NULL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -229,11 +228,8 @@ void get_tickets(context)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
- * Initialize cache file which we're going to be using
|
||||||
|
+ * Initialize an in-memory cache for temporary use
|
||||||
|
*/
|
||||||
|
- (void) mktemp(tkstring);
|
||||||
|
- snprintf(buf, sizeof(buf), "FILE:%s", tkstring);
|
||||||
|
-
|
||||||
|
retval = krb5_cc_resolve(context, buf, &ccache);
|
||||||
|
if (retval) {
|
||||||
|
com_err(progname, retval, "while opening credential cache %s",
|
49
krb5-1.8-ksu-access.patch
Normal file
49
krb5-1.8-ksu-access.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
The idea is to not complain about problems in the default ticket file if we
|
||||||
|
couldn't read it, because the client would be able to tell if it's there or
|
||||||
|
not. Still needs work, I think.
|
||||||
|
|
||||||
|
diff -up krb5-1.8/src/clients/ksu/ccache.c.ksu-access krb5-1.8/src/clients/ksu/ccache.c
|
||||||
|
--- krb5-1.8/src/clients/ksu/ccache.c.ksu-access 2009-10-30 20:48:38.000000000 -0400
|
||||||
|
+++ krb5-1.8/src/clients/ksu/ccache.c 2010-03-05 10:57:56.000000000 -0500
|
||||||
|
@@ -78,7 +78,7 @@ krb5_error_code krb5_ccache_copy (contex
|
||||||
|
cc_def_name = krb5_cc_get_name(context, cc_def);
|
||||||
|
cc_other_name = krb5_cc_get_name(context, *cc_other);
|
||||||
|
|
||||||
|
- if ( ! stat(cc_def_name, &st_temp)){
|
||||||
|
+ if ( ! access(cc_def_name, R_OK) && ! stat(cc_def_name, &st_temp)){
|
||||||
|
if((retval = krb5_get_nonexp_tkts(context,cc_def,&cc_def_creds_arr))){
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
diff -up krb5-1.8/src/clients/ksu/heuristic.c.ksu-access krb5-1.8/src/clients/ksu/heuristic.c
|
||||||
|
--- krb5-1.8/src/clients/ksu/heuristic.c.ksu-access 2009-10-30 20:48:38.000000000 -0400
|
||||||
|
+++ krb5-1.8/src/clients/ksu/heuristic.c 2010-03-05 10:57:56.000000000 -0500
|
||||||
|
@@ -409,7 +409,7 @@ krb5_error_code find_either_ticket (cont
|
||||||
|
|
||||||
|
cc_source_name = krb5_cc_get_name(context, cc);
|
||||||
|
|
||||||
|
- if ( ! stat(cc_source_name, &st_temp)){
|
||||||
|
+ if ( ! access(cc_source_name, F_OK | R_OK) && ! stat(cc_source_name, &st_temp)){
|
||||||
|
|
||||||
|
retval = find_ticket(context, cc, client, end_server, &temp_found);
|
||||||
|
if (retval)
|
||||||
|
@@ -569,7 +569,7 @@ krb5_error_code get_best_princ_for_targe
|
||||||
|
cc_source_name = krb5_cc_get_name(context, cc_source);
|
||||||
|
|
||||||
|
|
||||||
|
- if (! stat(cc_source_name, &st_temp)) {
|
||||||
|
+ if (! access(cc_source_name, F_OK | R_OK) && ! stat(cc_source_name, &st_temp)) {
|
||||||
|
retval = krb5_cc_get_principal(context, cc_source, &cc_def_princ);
|
||||||
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
diff -up krb5-1.8/src/clients/ksu/main.c.ksu-access krb5-1.8/src/clients/ksu/main.c
|
||||||
|
--- krb5-1.8/src/clients/ksu/main.c.ksu-access 2010-03-05 10:57:55.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/clients/ksu/main.c 2010-03-05 10:57:56.000000000 -0500
|
||||||
|
@@ -270,7 +270,7 @@ main (argc, argv)
|
||||||
|
if ( strchr(cc_source_tag, ':')){
|
||||||
|
cc_source_tag_tmp = strchr(cc_source_tag, ':') + 1;
|
||||||
|
|
||||||
|
- if( stat( cc_source_tag_tmp, &st_temp)){
|
||||||
|
+ if( access( cc_source_tag_tmp, F_OK | R_OK) || stat( cc_source_tag_tmp, &st_temp)){
|
||||||
|
com_err (prog_name, errno,
|
||||||
|
"while looking for credentials file %s",
|
||||||
|
cc_source_tag_tmp);
|
13
krb5-1.8-ksu-path.patch
Normal file
13
krb5-1.8-ksu-path.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Set the default PATH to the one set by login.
|
||||||
|
|
||||||
|
diff -up krb5-1.8/src/clients/ksu/Makefile.in.ksu-path krb5-1.8/src/clients/ksu/Makefile.in
|
||||||
|
--- krb5-1.8/src/clients/ksu/Makefile.in.ksu-path 2010-03-05 10:58:25.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/clients/ksu/Makefile.in 2010-03-05 10:58:25.000000000 -0500
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
mydir=clients/ksu
|
||||||
|
BUILDTOP=$(REL)..$(S)..
|
||||||
|
-DEFINES = -DGET_TGT_VIA_PASSWD -DPRINC_LOOK_AHEAD -DCMD_PATH='"/bin /local/bin"'
|
||||||
|
+DEFINES = -DGET_TGT_VIA_PASSWD -DPRINC_LOOK_AHEAD -DCMD_PATH='"/usr/local/sbin /usr/local/bin /sbin /usr/sbin /bin /usr/bin"'
|
||||||
|
DEFS=
|
||||||
|
|
||||||
|
PROG_LIBPATH=-L$(TOPLIBD)
|
@ -1,77 +1,12 @@
|
|||||||
Change the absolute paths included in the man pages so that the correct
|
Change the absolute paths included in the man pages so that the correct
|
||||||
values can be dropped in by config.status. After applying this patch,
|
values can be dropped in by config.status. After applying this patch,
|
||||||
these files should be renamed to their ".in" counterparts, and then the
|
these files should be renamed to their ".in" counterparts, and then the
|
||||||
configure scripts should be rebuilt. RT#6525
|
configure scripts should be rebuilt. Originally RT#6525
|
||||||
|
|
||||||
Index: configure.in
|
diff -up krb5-1.8/src/aclocal.m4.manpaths krb5-1.8/src/aclocal.m4
|
||||||
===================================================================
|
--- krb5-1.8/src/aclocal.m4.manpaths 2010-03-05 10:55:28.000000000 -0500
|
||||||
--- configure.in (revision 22425)
|
+++ krb5-1.8/src/aclocal.m4 2010-03-05 10:55:29.000000000 -0500
|
||||||
+++ configure.in (working copy)
|
@@ -1770,3 +1770,24 @@ AC_SUBST(PAM_LIBS)
|
||||||
@@ -1043,6 +1043,16 @@
|
|
||||||
KRB5_WITH_PAM
|
|
||||||
|
|
||||||
AC_CONFIG_FILES(krb5-config, [chmod +x krb5-config])
|
|
||||||
+
|
|
||||||
+V5_AC_OUTPUT_MANPAGE([
|
|
||||||
+ appl/sample/sserver/sserver.M
|
|
||||||
+ config-files/kdc.conf.M
|
|
||||||
+ config-files/krb5.conf.M
|
|
||||||
+ kadmin/cli/kadmin.M
|
|
||||||
+ slave/kpropd.M
|
|
||||||
+ slave/kprop.M
|
|
||||||
+])
|
|
||||||
+
|
|
||||||
V5_AC_OUTPUT_MAKEFILE(.
|
|
||||||
|
|
||||||
util util/support util/profile util/send-pr
|
|
||||||
Index: appl/gssftp/configure.in
|
|
||||||
===================================================================
|
|
||||||
--- appl/gssftp/configure.in (revision 22425)
|
|
||||||
+++ appl/gssftp/configure.in (working copy)
|
|
||||||
@@ -65,4 +65,9 @@
|
|
||||||
dnl
|
|
||||||
dnl
|
|
||||||
KRB5_BUILD_PROGRAM
|
|
||||||
+
|
|
||||||
+V5_AC_OUTPUT_MANPAGE([
|
|
||||||
+ ftpd/ftpd.M
|
|
||||||
+])
|
|
||||||
+
|
|
||||||
V5_AC_OUTPUT_MAKEFILE(. ftp ftpd)
|
|
||||||
Index: appl/bsd/configure.in
|
|
||||||
===================================================================
|
|
||||||
--- appl/bsd/configure.in (revision 22425)
|
|
||||||
+++ appl/bsd/configure.in (working copy)
|
|
||||||
@@ -156,4 +156,10 @@
|
|
||||||
|
|
||||||
KRB5_AC_LIBUTIL
|
|
||||||
KRB5_BUILD_PROGRAM
|
|
||||||
+
|
|
||||||
+V5_AC_OUTPUT_MANPAGE([
|
|
||||||
+ klogind.M
|
|
||||||
+ kshd.M
|
|
||||||
+])
|
|
||||||
+
|
|
||||||
V5_AC_OUTPUT_MAKEFILE
|
|
||||||
Index: appl/telnet/configure.in
|
|
||||||
===================================================================
|
|
||||||
--- appl/telnet/configure.in (revision 22425)
|
|
||||||
+++ appl/telnet/configure.in (working copy)
|
|
||||||
@@ -161,4 +161,9 @@
|
|
||||||
LIBS="$old_LIBS"
|
|
||||||
dnl
|
|
||||||
KRB5_AC_LIBUTIL
|
|
||||||
+
|
|
||||||
+V5_AC_OUTPUT_MANPAGE([
|
|
||||||
+ telnetd/telnetd.8
|
|
||||||
+])
|
|
||||||
+
|
|
||||||
V5_AC_OUTPUT_MAKEFILE(. libtelnet telnet telnetd)
|
|
||||||
Index: aclocal.m4
|
|
||||||
===================================================================
|
|
||||||
--- aclocal.m4 (revision 22425)
|
|
||||||
+++ aclocal.m4 (working copy)
|
|
||||||
@@ -1854,3 +1854,24 @@
|
|
||||||
AC_SUBST(PAM_MAN)
|
AC_SUBST(PAM_MAN)
|
||||||
AC_SUBST(NON_PAM_MAN)
|
AC_SUBST(NON_PAM_MAN)
|
||||||
])dnl
|
])dnl
|
||||||
@ -96,11 +31,10 @@ Index: aclocal.m4
|
|||||||
+AC_SUBST(manlibexecdir)
|
+AC_SUBST(manlibexecdir)
|
||||||
+AC_CONFIG_FILES($1)
|
+AC_CONFIG_FILES($1)
|
||||||
+])
|
+])
|
||||||
Index: appl/sample/sserver/sserver.M
|
diff -up krb5-1.8/src/appl/sample/sserver/sserver.M.manpaths krb5-1.8/src/appl/sample/sserver/sserver.M
|
||||||
===================================================================
|
--- krb5-1.8/src/appl/sample/sserver/sserver.M.manpaths 1999-09-24 17:20:59.000000000 -0400
|
||||||
--- appl/sample/sserver/sserver.M (revision 22425)
|
+++ krb5-1.8/src/appl/sample/sserver/sserver.M 2010-03-05 10:55:29.000000000 -0500
|
||||||
+++ appl/sample/sserver/sserver.M (working copy)
|
@@ -59,7 +59,7 @@ option allows for a different keytab tha
|
||||||
@@ -59,7 +59,7 @@
|
|
||||||
using a line in
|
using a line in
|
||||||
/etc/inetd.conf that looks like this:
|
/etc/inetd.conf that looks like this:
|
||||||
.PP
|
.PP
|
||||||
@ -109,97 +43,10 @@ Index: appl/sample/sserver/sserver.M
|
|||||||
.PP
|
.PP
|
||||||
Since \fBsample\fP is normally not a port defined in /etc/services, you will
|
Since \fBsample\fP is normally not a port defined in /etc/services, you will
|
||||||
usually have to add a line to /etc/services which looks like this:
|
usually have to add a line to /etc/services which looks like this:
|
||||||
Index: appl/bsd/klogind.M
|
diff -up krb5-1.8/src/config-files/kdc.conf.M.manpaths krb5-1.8/src/config-files/kdc.conf.M
|
||||||
===================================================================
|
--- krb5-1.8/src/config-files/kdc.conf.M.manpaths 2010-01-04 14:34:33.000000000 -0500
|
||||||
--- appl/bsd/klogind.M (revision 22425)
|
+++ krb5-1.8/src/config-files/kdc.conf.M 2010-03-05 10:55:29.000000000 -0500
|
||||||
+++ appl/bsd/klogind.M (working copy)
|
@@ -82,14 +82,14 @@ This
|
||||||
@@ -27,7 +27,7 @@
|
|
||||||
the port indicated in /etc/inetd.conf. A typical /etc/inetd.conf
|
|
||||||
configuration line for \fIklogind\fP might be:
|
|
||||||
|
|
||||||
-klogin stream tcp nowait root /usr/cygnus/sbin/klogind klogind -e5c
|
|
||||||
+klogin stream tcp nowait root @mansbindir@/klogind klogind -e5c
|
|
||||||
|
|
||||||
When a service request is received, the following protocol is initiated:
|
|
||||||
|
|
||||||
Index: appl/bsd/kshd.M
|
|
||||||
===================================================================
|
|
||||||
--- appl/bsd/kshd.M (revision 22425)
|
|
||||||
+++ appl/bsd/kshd.M (working copy)
|
|
||||||
@@ -8,7 +8,7 @@
|
|
||||||
.SH NAME
|
|
||||||
kshd \- kerberized remote shell server
|
|
||||||
.SH SYNOPSIS
|
|
||||||
-.B /usr/local/sbin/kshd
|
|
||||||
+.B @mansbindir@/kshd
|
|
||||||
[
|
|
||||||
.B \-kr45ec
|
|
||||||
]
|
|
||||||
@@ -30,7 +30,7 @@
|
|
||||||
on the port indicated in /etc/inetd.conf. A typical /etc/inetd.conf
|
|
||||||
configuration line for \fIkrshd\fP might be:
|
|
||||||
|
|
||||||
-kshell stream tcp nowait root /usr/local/sbin/kshd kshd -5c
|
|
||||||
+kshell stream tcp nowait root @mansbindir@/kshd kshd -5c
|
|
||||||
|
|
||||||
When a service request is received, the following protocol is initiated:
|
|
||||||
|
|
||||||
Index: appl/telnet/telnetd/telnetd.8
|
|
||||||
===================================================================
|
|
||||||
--- appl/telnet/telnetd/telnetd.8 (revision 22425)
|
|
||||||
+++ appl/telnet/telnetd/telnetd.8 (working copy)
|
|
||||||
@@ -37,7 +37,7 @@
|
|
||||||
.SM DARPA TELNET
|
|
||||||
protocol server
|
|
||||||
.SH SYNOPSIS
|
|
||||||
-.B /usr/libexec/telnetd
|
|
||||||
+.B @mansbindir@/telnetd
|
|
||||||
[\fB\-a\fP \fIauthmode\fP] [\fB\-B\fP] [\fB\-D\fP] [\fIdebugmode\fP]
|
|
||||||
[\fB\-e\fP] [\fB\-h\fP] [\fB\-I\fP\fIinitid\fP] [\fB\-l\fP]
|
|
||||||
[\fB\-k\fP] [\fB\-n\fP] [\fB\-r\fP\fIlowpty-highpty\fP] [\fB\-s\fP]
|
|
||||||
Index: appl/gssftp/ftpd/ftpd.M
|
|
||||||
===================================================================
|
|
||||||
--- appl/gssftp/ftpd/ftpd.M (revision 22425)
|
|
||||||
+++ appl/gssftp/ftpd/ftpd.M (working copy)
|
|
||||||
@@ -35,7 +35,7 @@
|
|
||||||
.SH NAME
|
|
||||||
ftpd \- DARPA Internet File Transfer Protocol server
|
|
||||||
.SH SYNOPSIS
|
|
||||||
-.B ftpd
|
|
||||||
+.B @mansbindir@/ftpd
|
|
||||||
[\fB\-A \fP|\fB -a\fP] [\fB\-C\fP] [\fB\-c\fP] [\fB\-d\fP] [\fB-E\fP]
|
|
||||||
[\fB\-l\fP] [\fB\-v\fP] [\fB\-T\fP \fImaxtimeout\fP] [\fB\-t\fP \fItimeout\fP]
|
|
||||||
[\fB\-p\fP \fIport\fP] [\fB\-U\fP \fIftpusers-file\fP] [\fB\-u\fP \fIumask\fP]
|
|
||||||
Index: kadmin/cli/kadmin.M
|
|
||||||
===================================================================
|
|
||||||
--- kadmin/cli/kadmin.M (revision 22425)
|
|
||||||
+++ kadmin/cli/kadmin.M (working copy)
|
|
||||||
@@ -850,9 +850,9 @@
|
|
||||||
.RS
|
|
||||||
.TP
|
|
||||||
EXAMPLE:
|
|
||||||
-kadmin: ktremove -k /usr/local/var/krb5kdc/kadmind.keytab kadmin/admin
|
|
||||||
+kadmin: ktremove -k @manlocalstatedir@/krb5kdc/kadmind.keytab kadmin/admin
|
|
||||||
Entry for principal kadmin/admin with kvno 3 removed
|
|
||||||
- from keytab WRFILE:/usr/local/var/krb5kdc/kadmind.keytab.
|
|
||||||
+ from keytab WRFILE:@manlocalstatedir@/krb5kdc/kadmind.keytab.
|
|
||||||
kadmin:
|
|
||||||
.RE
|
|
||||||
.fi
|
|
||||||
@@ -894,7 +894,7 @@
|
|
||||||
.SH HISTORY
|
|
||||||
The
|
|
||||||
.B kadmin
|
|
||||||
-prorgam was originally written by Tom Yu at MIT, as an interface to the
|
|
||||||
+program was originally written by Tom Yu at MIT, as an interface to the
|
|
||||||
OpenVision Kerberos administration program.
|
|
||||||
.SH SEE ALSO
|
|
||||||
.IR kerberos (1),
|
|
||||||
Index: config-files/kdc.conf.M
|
|
||||||
===================================================================
|
|
||||||
--- config-files/kdc.conf.M (revision 22425)
|
|
||||||
+++ config-files/kdc.conf.M (working copy)
|
|
||||||
@@ -82,14 +82,14 @@
|
|
||||||
.B string
|
.B string
|
||||||
specifies the location of the access control list (acl) file that
|
specifies the location of the access control list (acl) file that
|
||||||
kadmin uses to determine which principals are allowed which permissions
|
kadmin uses to determine which principals are allowed which permissions
|
||||||
@ -216,7 +63,7 @@ Index: config-files/kdc.conf.M
|
|||||||
|
|
||||||
.IP database_name
|
.IP database_name
|
||||||
This
|
This
|
||||||
@@ -257,7 +257,7 @@
|
@@ -254,7 +254,7 @@ tickets should be checked against the tr
|
||||||
realm names and the [capaths] section of its krb5.conf file
|
realm names and the [capaths] section of its krb5.conf file
|
||||||
|
|
||||||
.SH FILES
|
.SH FILES
|
||||||
@ -225,11 +72,10 @@ Index: config-files/kdc.conf.M
|
|||||||
|
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
krb5.conf(5), krb5kdc(8)
|
krb5.conf(5), krb5kdc(8)
|
||||||
Index: config-files/krb5.conf.M
|
diff -up krb5-1.8/src/config-files/krb5.conf.M.manpaths krb5-1.8/src/config-files/krb5.conf.M
|
||||||
===================================================================
|
--- krb5-1.8/src/config-files/krb5.conf.M.manpaths 2010-02-25 15:14:21.000000000 -0500
|
||||||
--- config-files/krb5.conf.M (revision 22425)
|
+++ krb5-1.8/src/config-files/krb5.conf.M 2010-03-05 10:55:29.000000000 -0500
|
||||||
+++ config-files/krb5.conf.M (working copy)
|
@@ -651,6 +651,6 @@ is whitespace-separated. The LDAP server
|
||||||
@@ -643,6 +643,6 @@
|
|
||||||
This LDAP specific tag indicates the number of connections to be maintained per
|
This LDAP specific tag indicates the number of connections to be maintained per
|
||||||
LDAP server.
|
LDAP server.
|
||||||
.SH FILES
|
.SH FILES
|
||||||
@ -237,42 +83,63 @@ Index: config-files/krb5.conf.M
|
|||||||
+@mansysconfdir@/krb5.conf
|
+@mansysconfdir@/krb5.conf
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
syslog(3)
|
syslog(3)
|
||||||
Index: slave/kprop.M
|
diff -up krb5-1.8/src/configure.in.manpaths krb5-1.8/src/configure.in
|
||||||
===================================================================
|
--- krb5-1.8/src/configure.in.manpaths 2010-03-05 10:55:29.000000000 -0500
|
||||||
--- slave/kprop.M (revision 22425)
|
+++ krb5-1.8/src/configure.in 2010-03-05 10:55:29.000000000 -0500
|
||||||
+++ slave/kprop.M (working copy)
|
@@ -1054,6 +1054,16 @@ fi
|
||||||
@@ -39,7 +39,7 @@
|
KRB5_WITH_PAM
|
||||||
This is done by transmitting the dumped database file to the slave
|
|
||||||
server over an encrypted, secure channel. The dump file must be created
|
AC_CONFIG_FILES(krb5-config, [chmod +x krb5-config])
|
||||||
by kdb5_util, and is normally KPROP_DEFAULT_FILE
|
+
|
||||||
-(/usr/local/var/krb5kdc/slave_datatrans).
|
+V5_AC_OUTPUT_MANPAGE([
|
||||||
+(@manlocalstatedir@/krb5kdc/slave_datatrans).
|
+ appl/sample/sserver/sserver.M
|
||||||
.SH OPTIONS
|
+ config-files/kdc.conf.M
|
||||||
|
+ config-files/krb5.conf.M
|
||||||
|
+ kadmin/cli/kadmin.M
|
||||||
|
+ slave/kpropd.M
|
||||||
|
+ slave/kprop.M
|
||||||
|
+])
|
||||||
|
+
|
||||||
|
V5_AC_OUTPUT_MAKEFILE(.
|
||||||
|
|
||||||
|
util util/support util/profile util/send-pr
|
||||||
|
diff -up krb5-1.8/src/kadmin/cli/kadmin.M.manpaths krb5-1.8/src/kadmin/cli/kadmin.M
|
||||||
|
--- krb5-1.8/src/kadmin/cli/kadmin.M.manpaths 2010-01-04 14:59:25.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/kadmin/cli/kadmin.M 2010-03-05 10:55:29.000000000 -0500
|
||||||
|
@@ -869,9 +869,9 @@ option is specified, less verbose status
|
||||||
|
.RS
|
||||||
.TP
|
.TP
|
||||||
\fB\-r\fP \fIrealm\fP
|
EXAMPLE:
|
||||||
@@ -51,7 +51,7 @@
|
-kadmin: ktremove -k /usr/local/var/krb5kdc/kadmind.keytab kadmin/admin
|
||||||
\fB\-f\fP \fIfile\fP
|
+kadmin: ktremove -k @manlocalstatedir@/krb5kdc/kadmind.keytab kadmin/admin
|
||||||
specifies the filename where the dumped principal database file is to be
|
Entry for principal kadmin/admin with kvno 3 removed
|
||||||
found; by default the dumped database file is KPROP_DEFAULT_FILE
|
- from keytab WRFILE:/usr/local/var/krb5kdc/kadmind.keytab.
|
||||||
-(normally /usr/local/var/krb5kdc/slave_datatrans).
|
+ from keytab WRFILE:@manlocalstatedir@/krb5kdc/kadmind.keytab.
|
||||||
+(normally @manlocalstatedir@/krb5kdc/slave_datatrans).
|
kadmin:
|
||||||
.TP
|
.RE
|
||||||
\fB\-P\fP \fIport\fP
|
.fi
|
||||||
specifies the port to use to contact the
|
@@ -913,7 +913,7 @@ passwords.
|
||||||
Index: slave/kpropd.M
|
.SH HISTORY
|
||||||
===================================================================
|
The
|
||||||
--- slave/kpropd.M (revision 22425)
|
.B kadmin
|
||||||
+++ slave/kpropd.M (working copy)
|
-prorgam was originally written by Tom Yu at MIT, as an interface to the
|
||||||
@@ -74,7 +74,7 @@
|
+program was originally written by Tom Yu at MIT, as an interface to the
|
||||||
|
OpenVision Kerberos administration program.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.IR kerberos (1),
|
||||||
|
diff -up krb5-1.8/src/slave/kpropd.M.manpaths krb5-1.8/src/slave/kpropd.M
|
||||||
|
--- krb5-1.8/src/slave/kpropd.M.manpaths 2009-12-30 23:21:34.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/slave/kpropd.M 2010-03-05 10:55:29.000000000 -0500
|
||||||
|
@@ -74,7 +74,7 @@ Normally, kpropd is invoked out of
|
||||||
This is done by adding a line to the inetd.conf file which looks like
|
This is done by adding a line to the inetd.conf file which looks like
|
||||||
this:
|
this:
|
||||||
|
|
||||||
-kprop stream tcp nowait root /usr/local/sbin/kpropd kpropd
|
-kprop stream tcp nowait root /usr/local/sbin/kpropd kpropd
|
||||||
+kprop stream tcp nowait root @mansbindir@/kpropd kpropd
|
+kprop stream tcp nowait root @mansbindir@/kpropd kpropd
|
||||||
|
|
||||||
However, kpropd can also run as a standalone deamon, if the
|
However, kpropd can also run as a standalone daemon, if the
|
||||||
.B \-S
|
.B \-S
|
||||||
@@ -111,13 +111,13 @@
|
@@ -111,13 +111,13 @@ is used.
|
||||||
\fB\-f\fP \fIfile\fP
|
\fB\-f\fP \fIfile\fP
|
||||||
specifies the filename where the dumped principal database file is to be
|
specifies the filename where the dumped principal database file is to be
|
||||||
stored; by default the dumped database file is KPROPD_DEFAULT_FILE
|
stored; by default the dumped database file is KPROPD_DEFAULT_FILE
|
||||||
@ -288,7 +155,7 @@ Index: slave/kpropd.M
|
|||||||
.TP
|
.TP
|
||||||
.B \-S
|
.B \-S
|
||||||
turn on standalone mode. Normally, kpropd is invoked out of
|
turn on standalone mode. Normally, kpropd is invoked out of
|
||||||
@@ -148,14 +148,14 @@
|
@@ -148,14 +148,14 @@ mode.
|
||||||
allows the user to specify the path to the
|
allows the user to specify the path to the
|
||||||
kpropd.acl
|
kpropd.acl
|
||||||
file; by default the path used is KPROPD_ACL_FILE
|
file; by default the path used is KPROPD_ACL_FILE
|
||||||
@ -305,3 +172,24 @@ Index: slave/kpropd.M
|
|||||||
Each entry is a line containing the principal of a host from which the
|
Each entry is a line containing the principal of a host from which the
|
||||||
local machine will allow Kerberos database propagation via kprop.
|
local machine will allow Kerberos database propagation via kprop.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
|
diff -up krb5-1.8/src/slave/kprop.M.manpaths krb5-1.8/src/slave/kprop.M
|
||||||
|
--- krb5-1.8/src/slave/kprop.M.manpaths 1999-09-24 17:20:59.000000000 -0400
|
||||||
|
+++ krb5-1.8/src/slave/kprop.M 2010-03-05 10:55:29.000000000 -0500
|
||||||
|
@@ -39,7 +39,7 @@ Kerberos server to a slave Kerberos serv
|
||||||
|
This is done by transmitting the dumped database file to the slave
|
||||||
|
server over an encrypted, secure channel. The dump file must be created
|
||||||
|
by kdb5_util, and is normally KPROP_DEFAULT_FILE
|
||||||
|
-(/usr/local/var/krb5kdc/slave_datatrans).
|
||||||
|
+(@manlocalstatedir@/krb5kdc/slave_datatrans).
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
\fB\-r\fP \fIrealm\fP
|
||||||
|
@@ -51,7 +51,7 @@ is used.
|
||||||
|
\fB\-f\fP \fIfile\fP
|
||||||
|
specifies the filename where the dumped principal database file is to be
|
||||||
|
found; by default the dumped database file is KPROP_DEFAULT_FILE
|
||||||
|
-(normally /usr/local/var/krb5kdc/slave_datatrans).
|
||||||
|
+(normally @manlocalstatedir@/krb5kdc/slave_datatrans).
|
||||||
|
.TP
|
||||||
|
\fB\-P\fP \fIport\fP
|
||||||
|
specifies the port to use to contact the
|
33
krb5-1.8-opte.patch
Normal file
33
krb5-1.8-opte.patch
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
Fall back to the library default for whether or not to prompt for a password-
|
||||||
|
change during authentication, if we weren't passed any options.
|
||||||
|
|
||||||
|
diff -up krb5-1.8/src/lib/krb5/krb/gic_pwd.c.opte krb5-1.8/src/lib/krb5/krb/gic_pwd.c
|
||||||
|
--- krb5-1.8/src/lib/krb5/krb/gic_pwd.c.opte 2009-12-23 11:00:05.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/lib/krb5/krb/gic_pwd.c 2010-03-05 11:03:42.000000000 -0500
|
||||||
|
@@ -123,6 +123,7 @@ krb5_get_init_creds_password(krb5_contex
|
||||||
|
int tries;
|
||||||
|
krb5_creds chpw_creds;
|
||||||
|
krb5_get_init_creds_opt *chpw_opts = NULL;
|
||||||
|
+ krb5_gic_opt_ext *opte = NULL;
|
||||||
|
krb5_data pw0, pw1;
|
||||||
|
char banner[1024], pw0array[1024], pw1array[1024];
|
||||||
|
krb5_prompt prompt[2];
|
||||||
|
@@ -218,7 +219,8 @@ krb5_get_init_creds_password(krb5_contex
|
||||||
|
* to prompt. Prompting is only disabled if the option has been set
|
||||||
|
* and the value has been set to false.
|
||||||
|
*/
|
||||||
|
- if (!(options->flags & KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT))
|
||||||
|
+ krb5int_gic_opt_to_opte(context, options, &opte, 1, NULL);
|
||||||
|
+ if (!(opte->flags & KRB5_GET_INIT_CREDS_OPT_CHG_PWD_PRMPT))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
/* ok, we have an expired password. Give the user a few chances
|
||||||
|
@@ -332,6 +334,8 @@ krb5_get_init_creds_password(krb5_contex
|
||||||
|
&use_master, &as_reply);
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
+ if (opte != options)
|
||||||
|
+ krb5_get_init_creds_opt_free(context, opte);
|
||||||
|
krb5int_set_prompt_types(context, 0);
|
||||||
|
/* if getting the password was successful, then check to see if the
|
||||||
|
password is about to expire, and warn if so */
|
724
krb5-1.8-pam.patch
Normal file
724
krb5-1.8-pam.patch
Normal file
@ -0,0 +1,724 @@
|
|||||||
|
Modify ksu so that it performs account and session management for the
|
||||||
|
target user account, mimicking the action of regular su. The default
|
||||||
|
service name is "ksu", because on Fedora at least the configuration used
|
||||||
|
is determined by whether or not a login shell is being opened, and so
|
||||||
|
this may need to vary, too. At run-time, ksu's behavior can be reset to
|
||||||
|
the earlier, non-PAM behavior by setting "use_pam" to false in the [ksu]
|
||||||
|
section of /etc/krb5.conf.
|
||||||
|
|
||||||
|
When enabled, ksu gains a dependency on libpam.
|
||||||
|
|
||||||
|
Originally RT#5939, needs updating for 1.8.
|
||||||
|
|
||||||
|
diff -up krb5-1.8/src/aclocal.m4.pam krb5-1.8/src/aclocal.m4
|
||||||
|
--- krb5-1.8/src/aclocal.m4.pam 2009-11-22 12:00:45.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/aclocal.m4 2010-03-05 10:48:08.000000000 -0500
|
||||||
|
@@ -1703,3 +1703,70 @@ AC_DEFUN(KRB5_AC_KEYRING_CCACHE,[
|
||||||
|
]))
|
||||||
|
])dnl
|
||||||
|
dnl
|
||||||
|
+dnl
|
||||||
|
+dnl Use PAM instead of local crypt() compare for checking local passwords,
|
||||||
|
+dnl and perform PAM account, session management, and password-changing where
|
||||||
|
+dnl appropriate.
|
||||||
|
+dnl
|
||||||
|
+AC_DEFUN(KRB5_WITH_PAM,[
|
||||||
|
+AC_ARG_WITH(pam,[AC_HELP_STRING(--with-pam,[compile with PAM support])],
|
||||||
|
+ withpam="$withval",withpam=auto)
|
||||||
|
+AC_ARG_WITH(pam-ksu-service,[AC_HELP_STRING(--with-ksu-service,[PAM service name for ksu ["ksu"]])],
|
||||||
|
+ withksupamservice="$withval",withksupamservice=ksu)
|
||||||
|
+old_LIBS="$LIBS"
|
||||||
|
+if test "$withpam" != no ; then
|
||||||
|
+ AC_MSG_RESULT([checking for PAM...])
|
||||||
|
+ PAM_LIBS=
|
||||||
|
+
|
||||||
|
+ AC_CHECK_HEADERS(security/pam_appl.h)
|
||||||
|
+ if test "x$ac_cv_header_security_pam_appl_h" != xyes ; then
|
||||||
|
+ if test "$withpam" = auto ; then
|
||||||
|
+ AC_MSG_RESULT([Unable to locate security/pam_appl.h.])
|
||||||
|
+ withpam=no
|
||||||
|
+ else
|
||||||
|
+ AC_MSG_ERROR([Unable to locate security/pam_appl.h.])
|
||||||
|
+ fi
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
+ LIBS=
|
||||||
|
+ unset ac_cv_func_pam_start
|
||||||
|
+ AC_CHECK_FUNCS(putenv pam_start)
|
||||||
|
+ if test "x$ac_cv_func_pam_start" = xno ; then
|
||||||
|
+ unset ac_cv_func_pam_start
|
||||||
|
+ AC_CHECK_LIB(dl,dlopen)
|
||||||
|
+ AC_CHECK_FUNCS(pam_start)
|
||||||
|
+ if test "x$ac_cv_func_pam_start" = xno ; then
|
||||||
|
+ AC_CHECK_LIB(pam,pam_start)
|
||||||
|
+ unset ac_cv_func_pam_start
|
||||||
|
+ unset ac_cv_func_pam_getenvlist
|
||||||
|
+ AC_CHECK_FUNCS(pam_start pam_getenvlist)
|
||||||
|
+ if test "x$ac_cv_func_pam_start" = xyes ; then
|
||||||
|
+ PAM_LIBS="$LIBS"
|
||||||
|
+ else
|
||||||
|
+ if test "$withpam" = auto ; then
|
||||||
|
+ AC_MSG_RESULT([Unable to locate libpam.])
|
||||||
|
+ withpam=no
|
||||||
|
+ else
|
||||||
|
+ AC_MSG_ERROR([Unable to locate libpam.])
|
||||||
|
+ fi
|
||||||
|
+ fi
|
||||||
|
+ fi
|
||||||
|
+ fi
|
||||||
|
+ if test "$withpam" != no ; then
|
||||||
|
+ AC_MSG_NOTICE([building with PAM support])
|
||||||
|
+ AC_DEFINE(USE_PAM,1,[Define if Kerberos-aware tools should support PAM])
|
||||||
|
+ AC_DEFINE_UNQUOTED(KSU_PAM_SERVICE,"$withksupamservice",
|
||||||
|
+ [Define to the name of the PAM service name to be used by ksu.])
|
||||||
|
+ PAM_LIBS="$LIBS"
|
||||||
|
+ NON_PAM_MAN=".\\\" "
|
||||||
|
+ PAM_MAN=
|
||||||
|
+ else
|
||||||
|
+ PAM_MAN=".\\\" "
|
||||||
|
+ NON_PAM_MAN=
|
||||||
|
+ fi
|
||||||
|
+fi
|
||||||
|
+LIBS="$old_LIBS"
|
||||||
|
+AC_SUBST(PAM_LIBS)
|
||||||
|
+AC_SUBST(PAM_MAN)
|
||||||
|
+AC_SUBST(NON_PAM_MAN)
|
||||||
|
+])dnl
|
||||||
|
diff -up krb5-1.8/src/clients/ksu/main.c.pam krb5-1.8/src/clients/ksu/main.c
|
||||||
|
--- krb5-1.8/src/clients/ksu/main.c.pam 2009-11-02 22:27:56.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/clients/ksu/main.c 2010-03-05 10:48:08.000000000 -0500
|
||||||
|
@@ -26,6 +26,7 @@
|
||||||
|
* KSU was writen by: Ari Medvinsky, ari@isi.edu
|
||||||
|
*/
|
||||||
|
|
||||||
|
+#include "autoconf.h"
|
||||||
|
#include "ksu.h"
|
||||||
|
#include "adm_proto.h"
|
||||||
|
#include <sys/types.h>
|
||||||
|
@@ -33,6 +34,10 @@
|
||||||
|
#include <signal.h>
|
||||||
|
#include <grp.h>
|
||||||
|
|
||||||
|
+#ifdef USE_PAM
|
||||||
|
+#include "pam.h"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* globals */
|
||||||
|
char * prog_name;
|
||||||
|
int auth_debug =0;
|
||||||
|
@@ -40,6 +45,7 @@ char k5login_path[MAXPATHLEN];
|
||||||
|
char k5users_path[MAXPATHLEN];
|
||||||
|
char * gb_err = NULL;
|
||||||
|
int quiet = 0;
|
||||||
|
+int force_fork = 0;
|
||||||
|
/***********/
|
||||||
|
|
||||||
|
#define _DEF_CSH "/bin/csh"
|
||||||
|
@@ -586,6 +592,25 @@ main (argc, argv)
|
||||||
|
prog_name,target_user,client_name,
|
||||||
|
source_user,ontty());
|
||||||
|
|
||||||
|
+#ifdef USE_PAM
|
||||||
|
+ if (appl_pam_enabled(ksu_context, "ksu")) {
|
||||||
|
+ if (appl_pam_acct_mgmt(KSU_PAM_SERVICE, 1, target_user, NULL,
|
||||||
|
+ NULL, source_user,
|
||||||
|
+ ttyname(STDERR_FILENO)) != 0) {
|
||||||
|
+ fprintf(stderr, "Access denied for %s.\n", target_user);
|
||||||
|
+ sweep_up(ksu_context, cc_target);
|
||||||
|
+ exit(1);
|
||||||
|
+ }
|
||||||
|
+ if (appl_pam_requires_chauthtok()) {
|
||||||
|
+ fprintf(stderr, "Password change required for %s.\n",
|
||||||
|
+ target_user);
|
||||||
|
+ sweep_up(ksu_context, cc_target);
|
||||||
|
+ exit(1);
|
||||||
|
+ }
|
||||||
|
+ force_fork++;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* Run authorization as target.*/
|
||||||
|
if (krb5_seteuid(target_uid)) {
|
||||||
|
com_err(prog_name, errno, "while switching to target for authorization check");
|
||||||
|
@@ -792,7 +817,7 @@ main (argc, argv)
|
||||||
|
fprintf(stderr, "program to be execed %s\n",params[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if( keep_target_cache ) {
|
||||||
|
+ if( keep_target_cache && !force_fork ) {
|
||||||
|
execv(params[0], params);
|
||||||
|
com_err(prog_name, errno, "while trying to execv %s",
|
||||||
|
params[0]);
|
||||||
|
@@ -800,6 +825,33 @@ main (argc, argv)
|
||||||
|
exit(1);
|
||||||
|
}else{
|
||||||
|
statusp = 1;
|
||||||
|
+
|
||||||
|
+#ifdef USE_PAM
|
||||||
|
+ if (appl_pam_enabled(ksu_context, "ksu")) {
|
||||||
|
+ if (appl_pam_session_open() != 0) {
|
||||||
|
+ fprintf(stderr, "Error opening session for %s.\n", target_user);
|
||||||
|
+ sweep_up(ksu_context, cc_target);
|
||||||
|
+ exit(1);
|
||||||
|
+ }
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ if (auth_debug){
|
||||||
|
+ printf(" Opened PAM session.\n");
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+ if (appl_pam_cred_init()) {
|
||||||
|
+ fprintf(stderr, "Error initializing credentials for %s.\n",
|
||||||
|
+ target_user);
|
||||||
|
+ sweep_up(ksu_context, cc_target);
|
||||||
|
+ exit(1);
|
||||||
|
+ }
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ if (auth_debug){
|
||||||
|
+ printf(" Initialized PAM credentials.\n");
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
switch ((child_pid = fork())) {
|
||||||
|
default:
|
||||||
|
if (auth_debug){
|
||||||
|
@@ -823,15 +875,34 @@ main (argc, argv)
|
||||||
|
if (ret_pid == -1) {
|
||||||
|
com_err(prog_name, errno, "while calling waitpid");
|
||||||
|
}
|
||||||
|
- sweep_up(ksu_context, cc_target);
|
||||||
|
+ if( !keep_target_cache ) {
|
||||||
|
+ sweep_up(ksu_context, cc_target);
|
||||||
|
+ }
|
||||||
|
exit (statusp);
|
||||||
|
case -1:
|
||||||
|
com_err(prog_name, errno, "while trying to fork.");
|
||||||
|
sweep_up(ksu_context, cc_target);
|
||||||
|
exit (1);
|
||||||
|
case 0:
|
||||||
|
+#ifdef USE_PAM
|
||||||
|
+ if (appl_pam_enabled(ksu_context, "ksu")) {
|
||||||
|
+ if (appl_pam_setenv() != 0) {
|
||||||
|
+ fprintf(stderr, "Error setting up environment for %s.\n",
|
||||||
|
+ target_user);
|
||||||
|
+ exit (1);
|
||||||
|
+ }
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ if (auth_debug){
|
||||||
|
+ printf(" Set up PAM environment.\n");
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
execv(params[0], params);
|
||||||
|
com_err(prog_name, errno, "while trying to execv %s", params[0]);
|
||||||
|
+ if( keep_target_cache ) {
|
||||||
|
+ sweep_up(ksu_context, cc_target);
|
||||||
|
+ }
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff -up krb5-1.8/src/clients/ksu/Makefile.in.pam krb5-1.8/src/clients/ksu/Makefile.in
|
||||||
|
--- krb5-1.8/src/clients/ksu/Makefile.in.pam 2009-11-22 13:13:29.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/clients/ksu/Makefile.in 2010-03-05 11:55:14.000000000 -0500
|
||||||
|
@@ -7,12 +7,14 @@
|
||||||
|
PROG_RPATH=$(KRB5_LIBDIR)
|
||||||
|
|
||||||
|
KSU_LIBS=@KSU_LIBS@
|
||||||
|
+PAM_LIBS=@PAM_LIBS@
|
||||||
|
|
||||||
|
SRCS = \
|
||||||
|
$(srcdir)/krb_auth_su.c \
|
||||||
|
$(srcdir)/ccache.c \
|
||||||
|
$(srcdir)/authorization.c \
|
||||||
|
$(srcdir)/main.c \
|
||||||
|
+ $(srcdir)/pam.c \
|
||||||
|
$(srcdir)/heuristic.c \
|
||||||
|
$(srcdir)/xmalloc.c \
|
||||||
|
$(srcdir)/setenv.c
|
||||||
|
@@ -21,13 +23,17 @@ OBJS = \
|
||||||
|
ccache.o \
|
||||||
|
authorization.o \
|
||||||
|
main.o \
|
||||||
|
+ pam.o \
|
||||||
|
heuristic.o \
|
||||||
|
xmalloc.o @SETENVOBJ@
|
||||||
|
|
||||||
|
all:: ksu
|
||||||
|
|
||||||
|
ksu: $(OBJS) $(KRB5_BASE_DEPLIBS)
|
||||||
|
- $(CC_LINK) -o $@ $(OBJS) $(KRB5_BASE_LIBS) $(KSU_LIBS)
|
||||||
|
+ $(CC_LINK) -o $@ $(OBJS) $(KRB5_BASE_LIBS) $(KSU_LIBS) $(PAM_LIBS)
|
||||||
|
+
|
||||||
|
+pam.o: pam.c
|
||||||
|
+ $(CC) $(ALL_CFLAGS) -c $<
|
||||||
|
|
||||||
|
clean::
|
||||||
|
$(RM) ksu
|
||||||
|
diff -up krb5-1.8/src/clients/ksu/pam.c.pam krb5-1.8/src/clients/ksu/pam.c
|
||||||
|
--- krb5-1.8/src/clients/ksu/pam.c.pam 2010-03-05 10:48:08.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/clients/ksu/pam.c 2010-03-05 10:48:08.000000000 -0500
|
||||||
|
@@ -0,0 +1,389 @@
|
||||||
|
+/*
|
||||||
|
+ * src/clients/ksu/pam.c
|
||||||
|
+ *
|
||||||
|
+ * Copyright 2007,2009,2010 Red Hat, Inc.
|
||||||
|
+ *
|
||||||
|
+ * All Rights Reserved.
|
||||||
|
+ *
|
||||||
|
+ * Redistribution and use in source and binary forms, with or without
|
||||||
|
+ * modification, are permitted provided that the following conditions are met:
|
||||||
|
+ *
|
||||||
|
+ * Redistributions of source code must retain the above copyright notice, this
|
||||||
|
+ * list of conditions and the following disclaimer.
|
||||||
|
+ *
|
||||||
|
+ * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
+ * this list of conditions and the following disclaimer in the documentation
|
||||||
|
+ * and/or other materials provided with the distribution.
|
||||||
|
+ *
|
||||||
|
+ * Neither the name of Red Hat, Inc. nor the names of its contributors may be
|
||||||
|
+ * used to endorse or promote products derived from this software without
|
||||||
|
+ * specific prior written permission.
|
||||||
|
+ *
|
||||||
|
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
+ * POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
+ *
|
||||||
|
+ * Convenience wrappers for using PAM.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "autoconf.h"
|
||||||
|
+#ifdef USE_PAM
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <stdio.h>
|
||||||
|
+#include <stdlib.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <unistd.h>
|
||||||
|
+#include "k5-int.h"
|
||||||
|
+#include "pam.h"
|
||||||
|
+
|
||||||
|
+#ifndef MAXPWSIZE
|
||||||
|
+#define MAXPWSIZE 128
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+static int appl_pam_started;
|
||||||
|
+static pid_t appl_pam_starter = -1;
|
||||||
|
+static int appl_pam_session_opened;
|
||||||
|
+static int appl_pam_creds_initialized;
|
||||||
|
+static int appl_pam_pwchange_required;
|
||||||
|
+static pam_handle_t *appl_pamh;
|
||||||
|
+static struct pam_conv appl_pam_conv;
|
||||||
|
+static char *appl_pam_user;
|
||||||
|
+struct appl_pam_non_interactive_args {
|
||||||
|
+ const char *user;
|
||||||
|
+ const char *password;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+int
|
||||||
|
+appl_pam_enabled(krb5_context context, const char *section)
|
||||||
|
+{
|
||||||
|
+ int enabled = 1;
|
||||||
|
+ if ((context != NULL) && (context->profile != NULL)) {
|
||||||
|
+ if (profile_get_boolean(context->profile,
|
||||||
|
+ section,
|
||||||
|
+ USE_PAM_CONFIGURATION_KEYWORD,
|
||||||
|
+ NULL,
|
||||||
|
+ enabled, &enabled) != 0) {
|
||||||
|
+ enabled = 1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return enabled;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+appl_pam_cleanup(void)
|
||||||
|
+{
|
||||||
|
+ if (getpid() != appl_pam_starter) {
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Called to clean up PAM.\n");
|
||||||
|
+#endif
|
||||||
|
+ if (appl_pam_creds_initialized) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Deleting PAM credentials.\n");
|
||||||
|
+#endif
|
||||||
|
+ pam_setcred(appl_pamh, PAM_DELETE_CRED);
|
||||||
|
+ appl_pam_creds_initialized = 0;
|
||||||
|
+ }
|
||||||
|
+ if (appl_pam_session_opened) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Closing PAM session.\n");
|
||||||
|
+#endif
|
||||||
|
+ pam_close_session(appl_pamh, 0);
|
||||||
|
+ appl_pam_session_opened = 0;
|
||||||
|
+ }
|
||||||
|
+ appl_pam_pwchange_required = 0;
|
||||||
|
+ if (appl_pam_started) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Shutting down PAM.\n");
|
||||||
|
+#endif
|
||||||
|
+ pam_end(appl_pamh, 0);
|
||||||
|
+ appl_pam_started = 0;
|
||||||
|
+ appl_pam_starter = -1;
|
||||||
|
+ free(appl_pam_user);
|
||||||
|
+ appl_pam_user = NULL;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+static int
|
||||||
|
+appl_pam_interactive_converse(int num_msg, const struct pam_message **msg,
|
||||||
|
+ struct pam_response **presp, void *appdata_ptr)
|
||||||
|
+{
|
||||||
|
+ const struct pam_message *message;
|
||||||
|
+ struct pam_response *resp;
|
||||||
|
+ int i, code;
|
||||||
|
+ char *pwstring, pwbuf[MAXPWSIZE];
|
||||||
|
+ unsigned int pwsize;
|
||||||
|
+ resp = malloc(sizeof(struct pam_response) * num_msg);
|
||||||
|
+ if (resp == NULL) {
|
||||||
|
+ return PAM_BUF_ERR;
|
||||||
|
+ }
|
||||||
|
+ memset(resp, 0, sizeof(struct pam_response) * num_msg);
|
||||||
|
+ code = PAM_SUCCESS;
|
||||||
|
+ for (i = 0; i < num_msg; i++) {
|
||||||
|
+ message = &(msg[0][i]); /* XXX */
|
||||||
|
+ message = msg[i]; /* XXX */
|
||||||
|
+ pwstring = NULL;
|
||||||
|
+ switch (message->msg_style) {
|
||||||
|
+ case PAM_TEXT_INFO:
|
||||||
|
+ case PAM_ERROR_MSG:
|
||||||
|
+ printf("[%s]\n", message->msg ? message->msg : "");
|
||||||
|
+ fflush(stdout);
|
||||||
|
+ resp[i].resp = NULL;
|
||||||
|
+ resp[i].resp_retcode = PAM_SUCCESS;
|
||||||
|
+ break;
|
||||||
|
+ case PAM_PROMPT_ECHO_ON:
|
||||||
|
+ case PAM_PROMPT_ECHO_OFF:
|
||||||
|
+ if (message->msg_style == PAM_PROMPT_ECHO_ON) {
|
||||||
|
+ if (fgets(pwbuf, sizeof(pwbuf),
|
||||||
|
+ stdin) != NULL) {
|
||||||
|
+ pwbuf[strcspn(pwbuf, "\r\n")] = '\0';
|
||||||
|
+ pwstring = pwbuf;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ pwstring = getpass(message->msg ?
|
||||||
|
+ message->msg :
|
||||||
|
+ "");
|
||||||
|
+ }
|
||||||
|
+ if ((pwstring != NULL) && (pwstring[0] != '\0')) {
|
||||||
|
+ pwsize = strlen(pwstring);
|
||||||
|
+ resp[i].resp = malloc(pwsize + 1);
|
||||||
|
+ if (resp[i].resp == NULL) {
|
||||||
|
+ resp[i].resp_retcode = PAM_BUF_ERR;
|
||||||
|
+ } else {
|
||||||
|
+ memcpy(resp[i].resp, pwstring, pwsize);
|
||||||
|
+ resp[i].resp[pwsize] = '\0';
|
||||||
|
+ resp[i].resp_retcode = PAM_SUCCESS;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ resp[i].resp_retcode = PAM_CONV_ERR;
|
||||||
|
+ code = PAM_CONV_ERR;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ *presp = resp;
|
||||||
|
+ return code;
|
||||||
|
+}
|
||||||
|
+static int
|
||||||
|
+appl_pam_non_interactive_converse(int num_msg,
|
||||||
|
+ const struct pam_message **msg,
|
||||||
|
+ struct pam_response **presp,
|
||||||
|
+ void *appdata_ptr)
|
||||||
|
+{
|
||||||
|
+ const struct pam_message *message;
|
||||||
|
+ struct pam_response *resp;
|
||||||
|
+ int i, code;
|
||||||
|
+ unsigned int pwsize;
|
||||||
|
+ struct appl_pam_non_interactive_args *args;
|
||||||
|
+ const char *pwstring;
|
||||||
|
+ resp = malloc(sizeof(struct pam_response) * num_msg);
|
||||||
|
+ if (resp == NULL) {
|
||||||
|
+ return PAM_BUF_ERR;
|
||||||
|
+ }
|
||||||
|
+ args = appdata_ptr;
|
||||||
|
+ memset(resp, 0, sizeof(struct pam_response) * num_msg);
|
||||||
|
+ code = PAM_SUCCESS;
|
||||||
|
+ for (i = 0; i < num_msg; i++) {
|
||||||
|
+ message = &((*msg)[i]);
|
||||||
|
+ message = msg[i];
|
||||||
|
+ pwstring = NULL;
|
||||||
|
+ switch (message->msg_style) {
|
||||||
|
+ case PAM_TEXT_INFO:
|
||||||
|
+ case PAM_ERROR_MSG:
|
||||||
|
+ break;
|
||||||
|
+ case PAM_PROMPT_ECHO_ON:
|
||||||
|
+ case PAM_PROMPT_ECHO_OFF:
|
||||||
|
+ if (message->msg_style == PAM_PROMPT_ECHO_ON) {
|
||||||
|
+ /* assume "user" */
|
||||||
|
+ pwstring = args->user;
|
||||||
|
+ } else {
|
||||||
|
+ /* assume "password" */
|
||||||
|
+ pwstring = args->password;
|
||||||
|
+ }
|
||||||
|
+ if ((pwstring != NULL) && (pwstring[0] != '\0')) {
|
||||||
|
+ pwsize = strlen(pwstring);
|
||||||
|
+ resp[i].resp = malloc(pwsize + 1);
|
||||||
|
+ if (resp[i].resp == NULL) {
|
||||||
|
+ resp[i].resp_retcode = PAM_BUF_ERR;
|
||||||
|
+ } else {
|
||||||
|
+ memcpy(resp[i].resp, pwstring, pwsize);
|
||||||
|
+ resp[i].resp[pwsize] = '\0';
|
||||||
|
+ resp[i].resp_retcode = PAM_SUCCESS;
|
||||||
|
+ }
|
||||||
|
+ } else {
|
||||||
|
+ resp[i].resp_retcode = PAM_CONV_ERR;
|
||||||
|
+ code = PAM_CONV_ERR;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ *presp = resp;
|
||||||
|
+ return code;
|
||||||
|
+}
|
||||||
|
+static int
|
||||||
|
+appl_pam_start(const char *service, int interactive,
|
||||||
|
+ const char *login_username,
|
||||||
|
+ const char *non_interactive_password,
|
||||||
|
+ const char *hostname,
|
||||||
|
+ const char *ruser,
|
||||||
|
+ const char *tty)
|
||||||
|
+{
|
||||||
|
+ static int exit_handler_registered;
|
||||||
|
+ static struct appl_pam_non_interactive_args args;
|
||||||
|
+ int ret = 0;
|
||||||
|
+ if (appl_pam_started &&
|
||||||
|
+ (strcmp(login_username, appl_pam_user) != 0)) {
|
||||||
|
+ appl_pam_cleanup();
|
||||||
|
+ appl_pam_user = NULL;
|
||||||
|
+ }
|
||||||
|
+ if (!appl_pam_started) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Starting PAM up (service=\"%s\",user=\"%s\").\n",
|
||||||
|
+ service, login_username);
|
||||||
|
+#endif
|
||||||
|
+ memset(&appl_pam_conv, 0, sizeof(appl_pam_conv));
|
||||||
|
+ appl_pam_conv.conv = interactive ?
|
||||||
|
+ &appl_pam_interactive_converse :
|
||||||
|
+ &appl_pam_non_interactive_converse;
|
||||||
|
+ memset(&args, 0, sizeof(args));
|
||||||
|
+ args.user = strdup(login_username);
|
||||||
|
+ args.password = non_interactive_password ?
|
||||||
|
+ strdup(non_interactive_password) :
|
||||||
|
+ NULL;
|
||||||
|
+ appl_pam_conv.appdata_ptr = &args;
|
||||||
|
+ ret = pam_start(service, login_username,
|
||||||
|
+ &appl_pam_conv, &appl_pamh);
|
||||||
|
+ if (ret == 0) {
|
||||||
|
+ if (hostname != NULL) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Setting PAM_RHOST to \"%s\".\n", hostname);
|
||||||
|
+#endif
|
||||||
|
+ pam_set_item(appl_pamh, PAM_RHOST, hostname);
|
||||||
|
+ }
|
||||||
|
+ if (ruser != NULL) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Setting PAM_RUSER to \"%s\".\n", ruser);
|
||||||
|
+#endif
|
||||||
|
+ pam_set_item(appl_pamh, PAM_RUSER, ruser);
|
||||||
|
+ }
|
||||||
|
+ if (tty != NULL) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Setting PAM_TTY to \"%s\".\n", tty);
|
||||||
|
+#endif
|
||||||
|
+ pam_set_item(appl_pamh, PAM_TTY, tty);
|
||||||
|
+ }
|
||||||
|
+ if (!exit_handler_registered &&
|
||||||
|
+ (atexit(appl_pam_cleanup) != 0)) {
|
||||||
|
+ pam_end(appl_pamh, 0);
|
||||||
|
+ appl_pamh = NULL;
|
||||||
|
+ ret = -1;
|
||||||
|
+ } else {
|
||||||
|
+ appl_pam_started = 1;
|
||||||
|
+ appl_pam_starter = getpid();
|
||||||
|
+ appl_pam_user = strdup(login_username);
|
||||||
|
+ exit_handler_registered = 1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+int
|
||||||
|
+appl_pam_acct_mgmt(const char *service, int interactive,
|
||||||
|
+ const char *login_username,
|
||||||
|
+ const char *non_interactive_password,
|
||||||
|
+ const char *hostname,
|
||||||
|
+ const char *ruser,
|
||||||
|
+ const char *tty)
|
||||||
|
+{
|
||||||
|
+ int ret;
|
||||||
|
+ appl_pam_pwchange_required = 0;
|
||||||
|
+ ret = appl_pam_start(service, interactive, login_username,
|
||||||
|
+ non_interactive_password, hostname, ruser, tty);
|
||||||
|
+ if (ret == 0) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Calling pam_acct_mgmt().\n");
|
||||||
|
+#endif
|
||||||
|
+ ret = pam_acct_mgmt(appl_pamh, 0);
|
||||||
|
+ switch (ret) {
|
||||||
|
+ case PAM_IGNORE:
|
||||||
|
+ ret = 0;
|
||||||
|
+ break;
|
||||||
|
+ case PAM_NEW_AUTHTOK_REQD:
|
||||||
|
+ appl_pam_pwchange_required = 1;
|
||||||
|
+ ret = 0;
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+int
|
||||||
|
+appl_pam_requires_chauthtok(void)
|
||||||
|
+{
|
||||||
|
+ return appl_pam_pwchange_required;
|
||||||
|
+}
|
||||||
|
+int
|
||||||
|
+appl_pam_session_open(void)
|
||||||
|
+{
|
||||||
|
+ int ret = 0;
|
||||||
|
+ if (appl_pam_started) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Opening PAM session.\n");
|
||||||
|
+#endif
|
||||||
|
+ ret = pam_open_session(appl_pamh, 0);
|
||||||
|
+ if (ret == 0) {
|
||||||
|
+ appl_pam_session_opened = 1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+int
|
||||||
|
+appl_pam_setenv(void)
|
||||||
|
+{
|
||||||
|
+ int ret = 0;
|
||||||
|
+#ifdef HAVE_PAM_GETENVLIST
|
||||||
|
+#ifdef HAVE_PUTENV
|
||||||
|
+ int i;
|
||||||
|
+ char **list;
|
||||||
|
+ if (appl_pam_started) {
|
||||||
|
+ list = pam_getenvlist(appl_pamh);
|
||||||
|
+ for (i = 0; ((list != NULL) && (list[i] != NULL)); i++) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Setting \"%s\" in environment.\n", list[i]);
|
||||||
|
+#endif
|
||||||
|
+ putenv(list[i]);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+int
|
||||||
|
+appl_pam_cred_init(void)
|
||||||
|
+{
|
||||||
|
+ int ret = 0;
|
||||||
|
+ if (appl_pam_started) {
|
||||||
|
+#ifdef DEBUG
|
||||||
|
+ printf("Initializing PAM credentials.\n");
|
||||||
|
+#endif
|
||||||
|
+ ret = pam_setcred(appl_pamh, PAM_ESTABLISH_CRED);
|
||||||
|
+ if (ret == 0) {
|
||||||
|
+ appl_pam_creds_initialized = 1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
diff -up krb5-1.8/src/clients/ksu/pam.h.pam krb5-1.8/src/clients/ksu/pam.h
|
||||||
|
--- krb5-1.8/src/clients/ksu/pam.h.pam 2010-03-05 10:48:08.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/clients/ksu/pam.h 2010-03-05 10:48:08.000000000 -0500
|
||||||
|
@@ -0,0 +1,57 @@
|
||||||
|
+/*
|
||||||
|
+ * src/clients/ksu/pam.h
|
||||||
|
+ *
|
||||||
|
+ * Copyright 2007,2009,2010 Red Hat, Inc.
|
||||||
|
+ *
|
||||||
|
+ * All Rights Reserved.
|
||||||
|
+ *
|
||||||
|
+ * Redistribution and use in source and binary forms, with or without
|
||||||
|
+ * modification, are permitted provided that the following conditions are met:
|
||||||
|
+ *
|
||||||
|
+ * Redistributions of source code must retain the above copyright notice, this
|
||||||
|
+ * list of conditions and the following disclaimer.
|
||||||
|
+ *
|
||||||
|
+ * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
+ * this list of conditions and the following disclaimer in the documentation
|
||||||
|
+ * and/or other materials provided with the distribution.
|
||||||
|
+ *
|
||||||
|
+ * Neither the name of Red Hat, Inc. nor the names of its contributors may be
|
||||||
|
+ * used to endorse or promote products derived from this software without
|
||||||
|
+ * specific prior written permission.
|
||||||
|
+ *
|
||||||
|
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
+ * POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
+ *
|
||||||
|
+ * Convenience wrappers for using PAM.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <krb5.h>
|
||||||
|
+#ifdef HAVE_SECURITY_PAM_APPL_H
|
||||||
|
+#include <security/pam_appl.h>
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#define USE_PAM_CONFIGURATION_KEYWORD "use_pam"
|
||||||
|
+
|
||||||
|
+#ifdef USE_PAM
|
||||||
|
+int appl_pam_enabled(krb5_context context, const char *section);
|
||||||
|
+int appl_pam_acct_mgmt(const char *service, int interactive,
|
||||||
|
+ const char *local_username,
|
||||||
|
+ const char *non_interactive_password,
|
||||||
|
+ const char *hostname,
|
||||||
|
+ const char *ruser,
|
||||||
|
+ const char *tty);
|
||||||
|
+int appl_pam_requires_chauthtok(void);
|
||||||
|
+int appl_pam_session_open(void);
|
||||||
|
+int appl_pam_setenv(void);
|
||||||
|
+int appl_pam_cred_init(void);
|
||||||
|
+void appl_pam_cleanup(void);
|
||||||
|
+#endif
|
||||||
|
diff -up krb5-1.8/src/configure.in.pam krb5-1.8/src/configure.in
|
||||||
|
--- krb5-1.8/src/configure.in.pam 2009-12-31 18:13:56.000000000 -0500
|
||||||
|
+++ krb5-1.8/src/configure.in 2010-03-05 10:48:08.000000000 -0500
|
||||||
|
@@ -1051,6 +1051,8 @@ if test "$ac_cv_lib_socket" = "yes" -a "
|
||||||
|
AC_DEFINE(BROKEN_STREAMS_SOCKETS,1,[Define if socket can't be bound to 0.0.0.0])
|
||||||
|
fi
|
||||||
|
|
||||||
|
+KRB5_WITH_PAM
|
||||||
|
+
|
||||||
|
AC_CONFIG_FILES(krb5-config, [chmod +x krb5-config])
|
||||||
|
V5_AC_OUTPUT_MAKEFILE(.
|
||||||
|
|
@ -31,9 +31,9 @@ The selabel APIs for looking up the context should be thread-safe (per
|
|||||||
Red Hat #273081), so switching to using them instead of matchpathcon(),
|
Red Hat #273081), so switching to using them instead of matchpathcon(),
|
||||||
which we used earlier, is some improvement.
|
which we used earlier, is some improvement.
|
||||||
|
|
||||||
diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
diff -up krb5-1.8/src/aclocal.m4.selinux-label krb5-1.8/src/aclocal.m4
|
||||||
--- krb5-1.7/src/aclocal.m4 2009-06-04 13:47:20.000000000 -0400
|
--- krb5-1.8/src/aclocal.m4.selinux-label 2010-03-05 10:57:23.000000000 -0500
|
||||||
+++ krb5-1.7/src/aclocal.m4 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/aclocal.m4 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -103,6 +103,7 @@ AC_SUBST_FILE(libnodeps_frag)
|
@@ -103,6 +103,7 @@ AC_SUBST_FILE(libnodeps_frag)
|
||||||
dnl
|
dnl
|
||||||
KRB5_AC_PRAGMA_WEAK_REF
|
KRB5_AC_PRAGMA_WEAK_REF
|
||||||
@ -42,7 +42,7 @@ diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
|||||||
KRB5_LIB_PARAMS
|
KRB5_LIB_PARAMS
|
||||||
KRB5_AC_INITFINI
|
KRB5_AC_INITFINI
|
||||||
KRB5_AC_ENABLE_THREADS
|
KRB5_AC_ENABLE_THREADS
|
||||||
@@ -1876,3 +1877,53 @@ AC_SUBST(PAM_LIBS)
|
@@ -1791,3 +1792,53 @@ AC_SUBST(manlocalstatedir)
|
||||||
AC_SUBST(manlibexecdir)
|
AC_SUBST(manlibexecdir)
|
||||||
AC_CONFIG_FILES($1)
|
AC_CONFIG_FILES($1)
|
||||||
])
|
])
|
||||||
@ -96,51 +96,18 @@ diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
|||||||
+LIBS="$old_LIBS"
|
+LIBS="$old_LIBS"
|
||||||
+AC_SUBST(SELINUX_LIBS)
|
+AC_SUBST(SELINUX_LIBS)
|
||||||
+])dnl
|
+])dnl
|
||||||
diff -up krb5-1.7/src/appl/bsd/configure.in krb5-1.7/src/appl/bsd/configure.in
|
diff -up krb5-1.8/src/config/pre.in.selinux-label krb5-1.8/src/config/pre.in
|
||||||
--- krb5-1.7/src/appl/bsd/configure.in 2009-06-04 13:47:20.000000000 -0400
|
--- krb5-1.8/src/config/pre.in.selinux-label 2010-03-05 10:57:23.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/bsd/configure.in 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/config/pre.in 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -25,6 +25,7 @@ AC_CHECK_LIB(odm,main,
|
@@ -180,6 +180,7 @@ LD_UNRESOLVED_PREFIX = @LD_UNRESOLVED_PREFIX@
|
||||||
LOGINLIBS="$LOGINLIBS -lodm -ls -lcfg"
|
LD_SHLIBDIR_PREFIX = @LD_SHLIBDIR_PREFIX@
|
||||||
)))
|
|
||||||
KRB5_WITH_PAM
|
|
||||||
+KRB5_WITH_SELINUX
|
|
||||||
dnl
|
|
||||||
dnl Make our operating system-specific security checks and definitions for
|
|
||||||
dnl login.
|
|
||||||
diff -up krb5-1.7/src/appl/gssftp/configure.in krb5-1.7/src/appl/gssftp/configure.in
|
|
||||||
--- krb5-1.7/src/appl/gssftp/configure.in 2009-06-04 13:47:20.000000000 -0400
|
|
||||||
+++ krb5-1.7/src/appl/gssftp/configure.in 2009-06-04 13:47:20.000000000 -0400
|
|
||||||
@@ -18,6 +18,7 @@ AC_REPLACE_FUNCS(getdtablesize)
|
|
||||||
AC_CHECK_FUNCS(getcwd getdtablesize getusershell seteuid setreuid setresuid strerror getenv)
|
|
||||||
AC_CHECK_LIB(crypt,crypt) dnl
|
|
||||||
KRB5_WITH_PAM
|
|
||||||
+KRB5_WITH_SELINUX
|
|
||||||
KRB5_AC_LIBUTIL
|
|
||||||
dnl
|
|
||||||
dnl copied from appl/bsd/configure.in
|
|
||||||
diff -up krb5-1.7/src/appl/telnet/configure.in krb5-1.7/src/appl/telnet/configure.in
|
|
||||||
--- krb5-1.7/src/appl/telnet/configure.in 2008-12-15 15:31:53.000000000 -0500
|
|
||||||
+++ krb5-1.7/src/appl/telnet/configure.in 2009-06-04 13:47:20.000000000 -0400
|
|
||||||
@@ -151,6 +151,7 @@ AC_MSG_RESULT($krb5_cv_sys_setpgrp_two)
|
|
||||||
if test $krb5_cv_sys_setpgrp_two = yes; then
|
|
||||||
AC_DEFINE(SETPGRP_TWOARG,1,[Define if setpgrp takes two arguments])
|
|
||||||
fi
|
|
||||||
+KRB5_WITH_SELINUX
|
|
||||||
dnl
|
|
||||||
KRB5_NEED_PROTO([#include <stdlib.h>],unsetenv,1)
|
|
||||||
dnl KRB5_NEED_PROTO([#include <stdlib.h>],setenv,1)
|
|
||||||
diff -up krb5-1.7/src/config/pre.in krb5-1.7/src/config/pre.in
|
|
||||||
--- krb5-1.7/src/config/pre.in 2009-06-04 13:47:20.000000000 -0400
|
|
||||||
+++ krb5-1.7/src/config/pre.in 2009-06-04 13:47:20.000000000 -0400
|
|
||||||
@@ -182,6 +182,7 @@ LD_SHLIBDIR_PREFIX = @LD_SHLIBDIR_PREFIX
|
|
||||||
LDARGS = @LDARGS@
|
LDARGS = @LDARGS@
|
||||||
LIBS = @LIBS@
|
LIBS = @LIBS@
|
||||||
PAM_LIBS = @PAM_LIBS@
|
|
||||||
+SELINUX_LIBS=@SELINUX_LIBS@
|
+SELINUX_LIBS=@SELINUX_LIBS@
|
||||||
|
|
||||||
INSTALL=@INSTALL@
|
INSTALL=@INSTALL@
|
||||||
INSTALL_STRIP=
|
INSTALL_STRIP=
|
||||||
@@ -382,7 +383,7 @@ SUPPORT_LIB = -l$(SUPPORT_LIBNAME)
|
@@ -379,7 +380,7 @@ SUPPORT_LIB = -l$(SUPPORT_LIBNAME)
|
||||||
# HESIOD_LIBS is -lhesiod...
|
# HESIOD_LIBS is -lhesiod...
|
||||||
HESIOD_LIBS = @HESIOD_LIBS@
|
HESIOD_LIBS = @HESIOD_LIBS@
|
||||||
|
|
||||||
@ -149,10 +116,10 @@ diff -up krb5-1.7/src/config/pre.in krb5-1.7/src/config/pre.in
|
|||||||
KDB5_LIBS = $(KDB5_LIB) $(GSSRPC_LIBS)
|
KDB5_LIBS = $(KDB5_LIB) $(GSSRPC_LIBS)
|
||||||
GSS_LIBS = $(GSS_KRB5_LIB)
|
GSS_LIBS = $(GSS_KRB5_LIB)
|
||||||
# needs fixing if ever used on Mac OS X!
|
# needs fixing if ever used on Mac OS X!
|
||||||
diff -up krb5-1.7/src/configure.in krb5-1.7/src/configure.in
|
diff -up krb5-1.8/src/configure.in.selinux-label krb5-1.8/src/configure.in
|
||||||
--- krb5-1.7/src/configure.in 2009-06-04 13:47:20.000000000 -0400
|
--- krb5-1.8/src/configure.in.selinux-label 2010-03-05 10:57:23.000000000 -0500
|
||||||
+++ krb5-1.7/src/configure.in 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/configure.in 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -1042,6 +1042,8 @@ AC_CONFIG_SUBDIRS(appl/libpty appl/bsd a
|
@@ -1053,6 +1053,8 @@ fi
|
||||||
|
|
||||||
KRB5_WITH_PAM
|
KRB5_WITH_PAM
|
||||||
|
|
||||||
@ -161,47 +128,10 @@ diff -up krb5-1.7/src/configure.in krb5-1.7/src/configure.in
|
|||||||
AC_CONFIG_FILES(krb5-config, [chmod +x krb5-config])
|
AC_CONFIG_FILES(krb5-config, [chmod +x krb5-config])
|
||||||
|
|
||||||
V5_AC_OUTPUT_MANPAGE([
|
V5_AC_OUTPUT_MANPAGE([
|
||||||
diff -up krb5-1.7/src/include/autoconf.h.in krb5-1.7/src/include/autoconf.h.in
|
diff -up krb5-1.8/src/include/k5-int.h.selinux-label krb5-1.8/src/include/k5-int.h
|
||||||
--- krb5-1.7/src/include/autoconf.h.in 2009-06-01 20:58:35.000000000 -0400
|
--- krb5-1.8/src/include/k5-int.h.selinux-label 2010-01-04 14:59:16.000000000 -0500
|
||||||
+++ krb5-1.7/src/include/autoconf.h.in 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/include/k5-int.h 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -389,6 +389,12 @@
|
@@ -133,6 +133,7 @@ typedef unsigned char u_char;
|
||||||
/* Define to 1 if you have the `sched_yield' function. */
|
|
||||||
#undef HAVE_SCHED_YIELD
|
|
||||||
|
|
||||||
+/* Define to 1 if you have the <selinux/label.h> header file. */
|
|
||||||
+#undef HAVE_SELINUX_LABEL_H
|
|
||||||
+
|
|
||||||
+/* Define to 1 if you have the <selinux/selinux.h> header file. */
|
|
||||||
+#undef HAVE_SELINUX_SELINUX_H
|
|
||||||
+
|
|
||||||
/* Define to 1 if you have the <semaphore.h> header file. */
|
|
||||||
#undef HAVE_SEMAPHORE_H
|
|
||||||
|
|
||||||
@@ -401,6 +407,9 @@
|
|
||||||
/* Define to 1 if you have the `setegid' function. */
|
|
||||||
#undef HAVE_SETEGID
|
|
||||||
|
|
||||||
+/* Define to 1 if you have the `setfscreatecon' function. */
|
|
||||||
+#undef HAVE_SETFSCREATECON
|
|
||||||
+
|
|
||||||
/* Define to 1 if you have the `setenv' function. */
|
|
||||||
#undef HAVE_SETENV
|
|
||||||
|
|
||||||
@@ -768,6 +777,10 @@
|
|
||||||
/* Define if the KDC should use a replay cache */
|
|
||||||
#undef USE_RCACHE
|
|
||||||
|
|
||||||
+/* Define if Kerberos-aware tools should set SELinux file contexts when
|
|
||||||
+ creating files. */
|
|
||||||
+#undef USE_SELINUX
|
|
||||||
+
|
|
||||||
/* Define if sigprocmask should be used */
|
|
||||||
#undef USE_SIGPROCMASK
|
|
||||||
|
|
||||||
diff -up krb5-1.7/src/include/k5-int.h krb5-1.7/src/include/k5-int.h
|
|
||||||
--- krb5-1.7/src/include/k5-int.h 2009-05-11 16:56:53.000000000 -0400
|
|
||||||
+++ krb5-1.7/src/include/k5-int.h 2009-06-04 13:47:20.000000000 -0400
|
|
||||||
@@ -132,6 +132,7 @@ typedef unsigned char u_char;
|
|
||||||
typedef UINT64_TYPE krb5_ui_8;
|
typedef UINT64_TYPE krb5_ui_8;
|
||||||
typedef INT64_TYPE krb5_int64;
|
typedef INT64_TYPE krb5_int64;
|
||||||
|
|
||||||
@ -209,16 +139,19 @@ diff -up krb5-1.7/src/include/k5-int.h krb5-1.7/src/include/k5-int.h
|
|||||||
|
|
||||||
#define DEFAULT_PWD_STRING1 "Enter password"
|
#define DEFAULT_PWD_STRING1 "Enter password"
|
||||||
#define DEFAULT_PWD_STRING2 "Re-enter password for verification"
|
#define DEFAULT_PWD_STRING2 "Re-enter password for verification"
|
||||||
diff -up /dev/null krb5-1.7/src/include/k5-label.h
|
diff -up krb5-1.8/src/include/k5-label.h.selinux-label krb5-1.8/src/include/k5-label.h
|
||||||
--- /dev/null 2009-06-04 10:34:55.169007373 -0400
|
--- krb5-1.8/src/include/k5-label.h.selinux-label 2010-03-05 10:57:23.000000000 -0500
|
||||||
+++ krb5-1.7/src/include/k5-label.h 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/include/k5-label.h 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -0,0 +1,27 @@
|
@@ -0,0 +1,30 @@
|
||||||
+#ifndef _KRB5_LABEL_H
|
+#ifndef _KRB5_LABEL_H
|
||||||
+#define _KRB5_LABEL_H
|
+#define _KRB5_LABEL_H
|
||||||
+
|
+
|
||||||
+#ifdef THREEPARAMOPEN
|
+#ifdef THREEPARAMOPEN
|
||||||
+#undef THREEPARAMOPEN
|
+#undef THREEPARAMOPEN
|
||||||
+#endif
|
+#endif
|
||||||
|
+#ifdef WRITABLEFOPEN
|
||||||
|
+#undef WRITABLEFOPEN
|
||||||
|
+#endif
|
||||||
+
|
+
|
||||||
+/* Wrapper functions which help us create files and directories with the right
|
+/* Wrapper functions which help us create files and directories with the right
|
||||||
+ * context labels. */
|
+ * context labels. */
|
||||||
@ -240,9 +173,9 @@ diff -up /dev/null krb5-1.7/src/include/k5-label.h
|
|||||||
+#define THREEPARAMOPEN(x,y,z) open(x,y,z)
|
+#define THREEPARAMOPEN(x,y,z) open(x,y,z)
|
||||||
+#endif
|
+#endif
|
||||||
+#endif
|
+#endif
|
||||||
diff -up krb5-1.7/src/include/krb5/krb5.hin krb5-1.7/src/include/krb5/krb5.hin
|
diff -up krb5-1.8/src/include/krb5/krb5.hin.selinux-label krb5-1.8/src/include/krb5/krb5.hin
|
||||||
--- krb5-1.7/src/include/krb5/krb5.hin 2009-04-15 16:07:03.000000000 -0400
|
--- krb5-1.8/src/include/krb5/krb5.hin.selinux-label 2010-01-21 17:49:07.000000000 -0500
|
||||||
+++ krb5-1.7/src/include/krb5/krb5.hin 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/include/krb5/krb5.hin 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -87,6 +87,12 @@
|
@@ -87,6 +87,12 @@
|
||||||
#define THREEPARAMOPEN(x,y,z) open(x,y,z)
|
#define THREEPARAMOPEN(x,y,z) open(x,y,z)
|
||||||
#endif
|
#endif
|
||||||
@ -256,21 +189,21 @@ diff -up krb5-1.7/src/include/krb5/krb5.hin krb5-1.7/src/include/krb5/krb5.hin
|
|||||||
#define KRB5_OLD_CRYPTO
|
#define KRB5_OLD_CRYPTO
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
diff -up krb5-1.7/src/kadmin/dbutil/dump.c krb5-1.7/src/kadmin/dbutil/dump.c
|
diff -up krb5-1.8/src/kadmin/dbutil/dump.c.selinux-label krb5-1.8/src/kadmin/dbutil/dump.c
|
||||||
--- krb5-1.7/src/kadmin/dbutil/dump.c 2009-01-30 18:55:14.000000000 -0500
|
--- krb5-1.8/src/kadmin/dbutil/dump.c.selinux-label 2009-10-30 20:48:38.000000000 -0400
|
||||||
+++ krb5-1.7/src/kadmin/dbutil/dump.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/kadmin/dbutil/dump.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -1219,7 +1219,7 @@ dump_db(argc, argv)
|
@@ -1274,7 +1274,7 @@ dump_db(argc, argv)
|
||||||
* want to get into.
|
* want to get into.
|
||||||
*/
|
*/
|
||||||
unlink(ofile);
|
unlink(ofile);
|
||||||
- if (!(f = fopen(ofile, "w"))) {
|
- if (!(f = fopen(ofile, "w"))) {
|
||||||
+ if (!(f = WRITABLEFOPEN(ofile, "w"))) {
|
+ if (!(f = WRITABLEFOPEN(ofile, "w"))) {
|
||||||
fprintf(stderr, ofopen_error,
|
fprintf(stderr, ofopen_error,
|
||||||
progname, ofile, error_message(errno));
|
progname, ofile, error_message(errno));
|
||||||
exit_status++;
|
exit_status++;
|
||||||
diff -up krb5-1.7/src/krb5-config.in krb5-1.7/src/krb5-config.in
|
diff -up krb5-1.8/src/krb5-config.in.selinux-label krb5-1.8/src/krb5-config.in
|
||||||
--- krb5-1.7/src/krb5-config.in 2008-12-18 13:31:16.000000000 -0500
|
--- krb5-1.8/src/krb5-config.in.selinux-label 2010-01-21 17:49:01.000000000 -0500
|
||||||
+++ krb5-1.7/src/krb5-config.in 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/krb5-config.in 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -38,6 +38,7 @@ RPATH_FLAG='@RPATH_FLAG@'
|
@@ -38,6 +38,7 @@ RPATH_FLAG='@RPATH_FLAG@'
|
||||||
PROG_RPATH_FLAGS='@PROG_RPATH_FLAGS@'
|
PROG_RPATH_FLAGS='@PROG_RPATH_FLAGS@'
|
||||||
PTHREAD_CFLAGS='@PTHREAD_CFLAGS@'
|
PTHREAD_CFLAGS='@PTHREAD_CFLAGS@'
|
||||||
@ -288,95 +221,95 @@ diff -up krb5-1.7/src/krb5-config.in krb5-1.7/src/krb5-config.in
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo $lib_flags
|
echo $lib_flags
|
||||||
diff -up krb5-1.7/src/lib/kadm5/logger.c krb5-1.7/src/lib/kadm5/logger.c
|
diff -up krb5-1.8/src/lib/kadm5/logger.c.selinux-label krb5-1.8/src/lib/kadm5/logger.c
|
||||||
--- krb5-1.7/src/lib/kadm5/logger.c 2008-12-29 18:01:15.000000000 -0500
|
--- krb5-1.8/src/lib/kadm5/logger.c.selinux-label 2009-12-28 21:42:51.000000000 -0500
|
||||||
+++ krb5-1.7/src/lib/kadm5/logger.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/lib/kadm5/logger.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -421,7 +421,7 @@ krb5_klog_init(krb5_context kcontext, ch
|
@@ -425,7 +425,7 @@ krb5_klog_init(krb5_context kcontext, ch
|
||||||
* Check for append/overwrite, then open the file.
|
* Check for append/overwrite, then open the file.
|
||||||
*/
|
*/
|
||||||
if (cp[4] == ':' || cp[4] == '=') {
|
if (cp[4] == ':' || cp[4] == '=') {
|
||||||
- f = fopen(&cp[5], (cp[4] == ':') ? "a" : "w");
|
- f = fopen(&cp[5], (cp[4] == ':') ? "a" : "w");
|
||||||
+ f = WRITABLEFOPEN(&cp[5], (cp[4] == ':') ? "a" : "w");
|
+ f = WRITABLEFOPEN(&cp[5], (cp[4] == ':') ? "a" : "w");
|
||||||
if (f) {
|
if (f) {
|
||||||
set_cloexec_file(f);
|
set_cloexec_file(f);
|
||||||
log_control.log_entries[i].lfu_filep = f;
|
log_control.log_entries[i].lfu_filep = f;
|
||||||
@@ -954,7 +954,7 @@ krb5_klog_reopen(krb5_context kcontext)
|
@@ -961,7 +961,7 @@ krb5_klog_reopen(krb5_context kcontext)
|
||||||
* In case the old logfile did not get moved out of the
|
* In case the old logfile did not get moved out of the
|
||||||
* way, open for append to prevent squashing the old logs.
|
* way, open for append to prevent squashing the old logs.
|
||||||
*/
|
*/
|
||||||
- f = fopen(log_control.log_entries[lindex].lfu_fname, "a+");
|
- f = fopen(log_control.log_entries[lindex].lfu_fname, "a+");
|
||||||
+ f = WRITABLEFOPEN(log_control.log_entries[lindex].lfu_fname, "a+");
|
+ f = WRITABLEFOPEN(log_control.log_entries[lindex].lfu_fname, "a+");
|
||||||
if (f) {
|
if (f) {
|
||||||
set_cloexec_file(f);
|
set_cloexec_file(f);
|
||||||
log_control.log_entries[lindex].lfu_filep = f;
|
log_control.log_entries[lindex].lfu_filep = f;
|
||||||
diff -up krb5-1.7/src/lib/krb5/keytab/kt_file.c krb5-1.7/src/lib/krb5/keytab/kt_file.c
|
diff -up krb5-1.8/src/lib/krb5/keytab/kt_file.c.selinux-label krb5-1.8/src/lib/krb5/keytab/kt_file.c
|
||||||
--- krb5-1.7/src/lib/krb5/keytab/kt_file.c 2009-05-11 16:55:22.000000000 -0400
|
--- krb5-1.8/src/lib/krb5/keytab/kt_file.c.selinux-label 2009-11-10 14:59:39.000000000 -0500
|
||||||
+++ krb5-1.7/src/lib/krb5/keytab/kt_file.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/lib/krb5/keytab/kt_file.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -1094,7 +1094,7 @@ krb5_ktfileint_open(krb5_context context
|
@@ -1050,7 +1050,7 @@ krb5_ktfileint_open(krb5_context context
|
||||||
|
|
||||||
KTCHECKLOCK(id);
|
KTCHECKLOCK(id);
|
||||||
errno = 0;
|
errno = 0;
|
||||||
- KTFILEP(id) = fopen(KTFILENAME(id),
|
- KTFILEP(id) = fopen(KTFILENAME(id),
|
||||||
+ KTFILEP(id) = WRITABLEFOPEN(KTFILENAME(id),
|
+ KTFILEP(id) = WRITABLEFOPEN(KTFILENAME(id),
|
||||||
(mode == KRB5_LOCKMODE_EXCLUSIVE) ?
|
(mode == KRB5_LOCKMODE_EXCLUSIVE) ?
|
||||||
fopen_mode_rbplus : fopen_mode_rb);
|
fopen_mode_rbplus : fopen_mode_rb);
|
||||||
if (!KTFILEP(id)) {
|
if (!KTFILEP(id)) {
|
||||||
@@ -1102,7 +1102,7 @@ krb5_ktfileint_open(krb5_context context
|
@@ -1058,7 +1058,7 @@ krb5_ktfileint_open(krb5_context context
|
||||||
/* try making it first time around */
|
/* try making it first time around */
|
||||||
krb5_create_secure_file(context, KTFILENAME(id));
|
krb5_create_secure_file(context, KTFILENAME(id));
|
||||||
errno = 0;
|
errno = 0;
|
||||||
- KTFILEP(id) = fopen(KTFILENAME(id), fopen_mode_rbplus);
|
- KTFILEP(id) = fopen(KTFILENAME(id), fopen_mode_rbplus);
|
||||||
+ KTFILEP(id) = WRITABLEFOPEN(KTFILENAME(id), fopen_mode_rbplus);
|
+ KTFILEP(id) = WRITABLEFOPEN(KTFILENAME(id), fopen_mode_rbplus);
|
||||||
if (!KTFILEP(id))
|
if (!KTFILEP(id))
|
||||||
goto report_errno;
|
goto report_errno;
|
||||||
writevno = 1;
|
writevno = 1;
|
||||||
diff -up krb5-1.7/src/plugins/kdb/db2/adb_openclose.c krb5-1.7/src/plugins/kdb/db2/adb_openclose.c
|
diff -up krb5-1.8/src/plugins/kdb/db2/adb_openclose.c.selinux-label krb5-1.8/src/plugins/kdb/db2/adb_openclose.c
|
||||||
--- krb5-1.7/src/plugins/kdb/db2/adb_openclose.c 2007-10-22 15:18:53.000000000 -0400
|
--- krb5-1.8/src/plugins/kdb/db2/adb_openclose.c.selinux-label 2009-11-24 18:52:25.000000000 -0500
|
||||||
+++ krb5-1.7/src/plugins/kdb/db2/adb_openclose.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/plugins/kdb/db2/adb_openclose.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -198,7 +198,7 @@ krb5_error_code osa_adb_init_db(osa_adb_
|
@@ -201,7 +201,7 @@ osa_adb_init_db(osa_adb_db_t *dbp, char
|
||||||
* POSIX systems
|
* POSIX systems
|
||||||
*/
|
*/
|
||||||
lockp->lockinfo.filename = strdup(lockfilename);
|
lockp->lockinfo.filename = strdup(lockfilename);
|
||||||
- if ((lockp->lockinfo.lockfile = fopen(lockfilename, "r+")) == NULL) {
|
- if ((lockp->lockinfo.lockfile = fopen(lockfilename, "r+")) == NULL) {
|
||||||
+ if ((lockp->lockinfo.lockfile = WRITABLEFOPEN(lockfilename, "r+")) == NULL) {
|
+ if ((lockp->lockinfo.lockfile = WRITABLEFOPEN(lockfilename, "r+")) == NULL) {
|
||||||
/*
|
/*
|
||||||
* maybe someone took away write permission so we could only
|
* maybe someone took away write permission so we could only
|
||||||
* get shared locks?
|
* get shared locks?
|
||||||
diff -up krb5-1.7/src/plugins/kdb/db2/kdb_db2.c krb5-1.7/src/plugins/kdb/db2/kdb_db2.c
|
diff -up krb5-1.8/src/plugins/kdb/db2/kdb_db2.c.selinux-label krb5-1.8/src/plugins/kdb/db2/kdb_db2.c
|
||||||
--- krb5-1.7/src/plugins/kdb/db2/kdb_db2.c 2009-01-30 20:07:04.000000000 -0500
|
--- krb5-1.8/src/plugins/kdb/db2/kdb_db2.c.selinux-label 2009-11-25 09:36:05.000000000 -0500
|
||||||
+++ krb5-1.7/src/plugins/kdb/db2/kdb_db2.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/plugins/kdb/db2/kdb_db2.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -327,8 +327,8 @@ krb5_db2_db_init(krb5_context context)
|
@@ -326,8 +326,8 @@ krb5_db2_db_init(krb5_context context)
|
||||||
* should be opened read/write so that write locking can work with
|
* should be opened read/write so that write locking can work with
|
||||||
* POSIX systems
|
* POSIX systems
|
||||||
*/
|
*/
|
||||||
- if ((db_ctx->db_lf_file = open(filename, O_RDWR, 0666)) < 0) {
|
- if ((db_ctx->db_lf_file = open(filename, O_RDWR, 0666)) < 0) {
|
||||||
- if ((db_ctx->db_lf_file = open(filename, O_RDONLY, 0666)) < 0) {
|
- if ((db_ctx->db_lf_file = open(filename, O_RDONLY, 0666)) < 0) {
|
||||||
+ if ((db_ctx->db_lf_file = THREEPARAMOPEN(filename, O_RDWR, 0666)) < 0) {
|
+ if ((db_ctx->db_lf_file = THREEPARAMOPEN(filename, O_RDWR, 0666)) < 0) {
|
||||||
+ if ((db_ctx->db_lf_file = THREEPARAMOPEN(filename, O_RDONLY, 0666)) < 0) {
|
+ if ((db_ctx->db_lf_file = THREEPARAMOPEN(filename, O_RDONLY, 0666)) < 0) {
|
||||||
retval = errno;
|
retval = errno;
|
||||||
goto err_out;
|
goto err_out;
|
||||||
}
|
}
|
||||||
@@ -754,7 +754,7 @@ krb5_db2_db_create(krb5_context context,
|
@@ -745,7 +745,7 @@ krb5_db2_db_create(krb5_context context,
|
||||||
if (!okname)
|
if (!okname)
|
||||||
retval = ENOMEM;
|
retval = ENOMEM;
|
||||||
else {
|
else {
|
||||||
- fd = open(okname, O_CREAT | O_RDWR | O_TRUNC, 0600);
|
- fd = open(okname, O_CREAT | O_RDWR | O_TRUNC, 0600);
|
||||||
+ fd = THREEPARAMOPEN(okname, O_CREAT | O_RDWR | O_TRUNC, 0600);
|
+ fd = THREEPARAMOPEN(okname, O_CREAT | O_RDWR | O_TRUNC, 0600);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
retval = errno;
|
retval = errno;
|
||||||
else
|
else
|
||||||
@@ -1795,7 +1795,7 @@ krb5_db2_db_rename(context, from, to)
|
@@ -1925,7 +1925,7 @@ krb5_db2_db_rename(context, from, to, me
|
||||||
retval = ENOMEM;
|
retval = ENOMEM;
|
||||||
goto errout;
|
goto errout;
|
||||||
}
|
}
|
||||||
- db_ctx->db_lf_file = open(db_ctx->db_lf_name, O_RDWR|O_CREAT, 0600);
|
- db_ctx->db_lf_file = open(db_ctx->db_lf_name, O_RDWR|O_CREAT, 0600);
|
||||||
+ db_ctx->db_lf_file = THREEPARAMOPEN(db_ctx->db_lf_name, O_RDWR|O_CREAT, 0600);
|
+ db_ctx->db_lf_file = THREEPARAMOPEN(db_ctx->db_lf_name, O_RDWR|O_CREAT, 0600);
|
||||||
if (db_ctx->db_lf_file < 0) {
|
if (db_ctx->db_lf_file < 0) {
|
||||||
retval = errno;
|
retval = errno;
|
||||||
goto errout;
|
goto errout;
|
||||||
diff -up krb5-1.7/src/plugins/kdb/db2/libdb2/btree/bt_open.c krb5-1.7/src/plugins/kdb/db2/libdb2/btree/bt_open.c
|
diff -up krb5-1.8/src/plugins/kdb/db2/libdb2/btree/bt_open.c.selinux-label krb5-1.8/src/plugins/kdb/db2/libdb2/btree/bt_open.c
|
||||||
--- krb5-1.7/src/plugins/kdb/db2/libdb2/btree/bt_open.c 2007-10-22 15:18:53.000000000 -0400
|
--- krb5-1.8/src/plugins/kdb/db2/libdb2/btree/bt_open.c.selinux-label 2009-10-30 20:48:38.000000000 -0400
|
||||||
+++ krb5-1.7/src/plugins/kdb/db2/libdb2/btree/bt_open.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/plugins/kdb/db2/libdb2/btree/bt_open.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -60,6 +60,7 @@ static char sccsid[] = "@(#)bt_open.c 8.
|
@@ -60,6 +60,7 @@ static char sccsid[] = "@(#)bt_open.c 8.
|
||||||
|
|
||||||
#include "k5-platform.h" /* mkstemp? */
|
#include "k5-platform.h" /* mkstemp? */
|
||||||
@ -388,15 +321,15 @@ diff -up krb5-1.7/src/plugins/kdb/db2/libdb2/btree/bt_open.c krb5-1.7/src/plugin
|
|||||||
@@ -203,7 +204,7 @@ __bt_open(fname, flags, mode, openinfo,
|
@@ -203,7 +204,7 @@ __bt_open(fname, flags, mode, openinfo,
|
||||||
goto einval;
|
goto einval;
|
||||||
}
|
}
|
||||||
|
|
||||||
- if ((t->bt_fd = open(fname, flags | O_BINARY, mode)) < 0)
|
- if ((t->bt_fd = open(fname, flags | O_BINARY, mode)) < 0)
|
||||||
+ if ((t->bt_fd = THREEPARAMOPEN(fname, flags | O_BINARY, mode)) < 0)
|
+ if ((t->bt_fd = THREEPARAMOPEN(fname, flags | O_BINARY, mode)) < 0)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
diff -up krb5-1.7/src/plugins/kdb/db2/libdb2/hash/hash.c krb5-1.7/src/plugins/kdb/db2/libdb2/hash/hash.c
|
diff -up krb5-1.8/src/plugins/kdb/db2/libdb2/hash/hash.c.selinux-label krb5-1.8/src/plugins/kdb/db2/libdb2/hash/hash.c
|
||||||
--- krb5-1.7/src/plugins/kdb/db2/libdb2/hash/hash.c 2009-01-23 13:04:08.000000000 -0500
|
--- krb5-1.8/src/plugins/kdb/db2/libdb2/hash/hash.c.selinux-label 2009-10-30 20:48:38.000000000 -0400
|
||||||
+++ krb5-1.7/src/plugins/kdb/db2/libdb2/hash/hash.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/plugins/kdb/db2/libdb2/hash/hash.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -51,6 +51,7 @@ static char sccsid[] = "@(#)hash.c 8.12
|
@@ -51,6 +51,7 @@ static char sccsid[] = "@(#)hash.c 8.12
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#endif
|
#endif
|
||||||
@ -414,9 +347,9 @@ diff -up krb5-1.7/src/plugins/kdb/db2/libdb2/hash/hash.c krb5-1.7/src/plugins/kd
|
|||||||
RETURN_ERROR(errno, error0);
|
RETURN_ERROR(errno, error0);
|
||||||
(void)fcntl(hashp->fp, F_SETFD, 1);
|
(void)fcntl(hashp->fp, F_SETFD, 1);
|
||||||
}
|
}
|
||||||
diff -up krb5-1.7/src/plugins/kdb/db2/libdb2/recno/rec_open.c krb5-1.7/src/plugins/kdb/db2/libdb2/recno/rec_open.c
|
diff -up krb5-1.8/src/plugins/kdb/db2/libdb2/recno/rec_open.c.selinux-label krb5-1.8/src/plugins/kdb/db2/libdb2/recno/rec_open.c
|
||||||
--- krb5-1.7/src/plugins/kdb/db2/libdb2/recno/rec_open.c 2007-10-22 15:18:53.000000000 -0400
|
--- krb5-1.8/src/plugins/kdb/db2/libdb2/recno/rec_open.c.selinux-label 2007-10-22 15:18:53.000000000 -0400
|
||||||
+++ krb5-1.7/src/plugins/kdb/db2/libdb2/recno/rec_open.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/plugins/kdb/db2/libdb2/recno/rec_open.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -51,6 +51,7 @@ static char sccsid[] = "@(#)rec_open.c 8
|
@@ -51,6 +51,7 @@ static char sccsid[] = "@(#)rec_open.c 8
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -434,10 +367,10 @@ diff -up krb5-1.7/src/plugins/kdb/db2/libdb2/recno/rec_open.c krb5-1.7/src/plugi
|
|||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
if (fname != NULL && fcntl(rfd, F_SETFD, 1) == -1) {
|
if (fname != NULL && fcntl(rfd, F_SETFD, 1) == -1) {
|
||||||
diff -up krb5-1.7/src/plugins/kdb/db2/libdb2/test/Makefile.in krb5-1.7/src/plugins/kdb/db2/libdb2/test/Makefile.in
|
diff -up krb5-1.8/src/plugins/kdb/db2/libdb2/test/Makefile.in.selinux-label krb5-1.8/src/plugins/kdb/db2/libdb2/test/Makefile.in
|
||||||
--- krb5-1.7/src/plugins/kdb/db2/libdb2/test/Makefile.in 2008-08-25 19:08:16.000000000 -0400
|
--- krb5-1.8/src/plugins/kdb/db2/libdb2/test/Makefile.in.selinux-label 2009-11-22 13:13:29.000000000 -0500
|
||||||
+++ krb5-1.7/src/plugins/kdb/db2/libdb2/test/Makefile.in 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/plugins/kdb/db2/libdb2/test/Makefile.in 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -14,7 +14,8 @@ PROG_RPATH=$(KRB5_LIBDIR)
|
@@ -12,7 +12,8 @@ PROG_RPATH=$(KRB5_LIBDIR)
|
||||||
|
|
||||||
KRB5_RUN_ENV= @KRB5_RUN_ENV@
|
KRB5_RUN_ENV= @KRB5_RUN_ENV@
|
||||||
|
|
||||||
@ -447,19 +380,19 @@ diff -up krb5-1.7/src/plugins/kdb/db2/libdb2/test/Makefile.in krb5-1.7/src/plugi
|
|||||||
DB_DEPLIB = ../libdb$(DEPLIBEXT)
|
DB_DEPLIB = ../libdb$(DEPLIBEXT)
|
||||||
|
|
||||||
all::
|
all::
|
||||||
diff -up krb5-1.7/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c krb5-1.7/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c
|
diff -up krb5-1.8/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c.selinux-label krb5-1.8/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c
|
||||||
--- krb5-1.7/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c 2008-12-01 12:09:59.000000000 -0500
|
--- krb5-1.8/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c.selinux-label 2009-11-24 18:52:25.000000000 -0500
|
||||||
+++ krb5-1.7/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -1096,7 +1096,7 @@ rem_service_entry_from_file(argc, argv,
|
@@ -1091,7 +1091,7 @@
|
||||||
|
|
||||||
/* Create a temporary file which contains all the entries except the
|
/* Create a temporary file which contains all the entries except the
|
||||||
entry for the given service dn */
|
entry for the given service dn */
|
||||||
- pfile = fopen(file_name, "r+");
|
- pfile = fopen(file_name, "r+");
|
||||||
+ pfile = WRITABLEFOPEN(file_name, "r+");
|
+ pfile = WRITABLEFOPEN(file_name, "r+");
|
||||||
if (pfile == NULL) {
|
if (pfile == NULL) {
|
||||||
com_err(me, errno, "while deleting entry from file %s", file_name);
|
com_err(me, errno, "while deleting entry from file %s", file_name);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@@ -1113,7 +1113,7 @@ rem_service_entry_from_file(argc, argv,
|
@@ -1108,7 +1108,7 @@
|
||||||
snprintf (tmp_file, strlen(file_name) + 4 + 1, "%s%s", file_name, ".tmp");
|
snprintf (tmp_file, strlen(file_name) + 4 + 1, "%s%s", file_name, ".tmp");
|
||||||
|
|
||||||
|
|
||||||
@ -467,79 +400,88 @@ diff -up krb5-1.7/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c krb5-1.7/s
|
|||||||
+ tmpfd = THREEPARAMOPEN(tmp_file, O_CREAT|O_WRONLY|O_TRUNC, S_IRUSR|S_IWUSR);
|
+ tmpfd = THREEPARAMOPEN(tmp_file, O_CREAT|O_WRONLY|O_TRUNC, S_IRUSR|S_IWUSR);
|
||||||
umask(omask);
|
umask(omask);
|
||||||
if (tmpfd == -1) {
|
if (tmpfd == -1) {
|
||||||
com_err(me, errno, "while deleting entry from file\n");
|
com_err(me, errno, "while deleting entry from file\n");
|
||||||
@@ -1767,7 +1767,7 @@ kdb5_ldap_set_service_password(argc, arg
|
@@ -1728,7 +1728,7 @@
|
||||||
|
|
||||||
|
printf("File does not exist. Creating the file %s...\n", file_name);
|
||||||
|
omask = umask(077);
|
||||||
|
- fd = creat(file_name, S_IRUSR|S_IWUSR);
|
||||||
|
+ fd = THREEPARAMOPEN(file_name, O_CREAT|O_WRONLY|O_TRUNC, S_IRUSR|S_IWUSR);
|
||||||
|
umask(omask);
|
||||||
|
if (fd == -1) {
|
||||||
|
com_err(me, errno, "Error creating file %s", file_name);
|
||||||
|
@@ -1756,7 +1756,7 @@
|
||||||
|
|
||||||
/* TODO: file lock for the service password file */
|
/* TODO: file lock for the service password file */
|
||||||
/* set password in the file */
|
/* set password in the file */
|
||||||
- pfile = fopen(file_name, "r+");
|
- pfile = fopen(file_name, "r+");
|
||||||
+ pfile = WRITABLEFOPEN(file_name, "r+");
|
+ pfile = WRITABLEFOPEN(file_name, "r+");
|
||||||
if (pfile == NULL) {
|
if (pfile == NULL) {
|
||||||
com_err(me, errno, "Failed to open file %s", file_name);
|
com_err(me, errno, "Failed to open file %s", file_name);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@@ -1808,7 +1808,7 @@ kdb5_ldap_set_service_password(argc, arg
|
@@ -1797,7 +1797,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
omask = umask(077);
|
omask = umask(077);
|
||||||
- newfile = fopen(tmp_file, "w+");
|
- newfile = fopen(tmp_file, "w+");
|
||||||
+ newfile = WRITABLEFOPEN(tmp_file, "w+");
|
+ newfile = WRITABLEFOPEN(tmp_file, "w+");
|
||||||
umask(omask);
|
umask(omask);
|
||||||
if (newfile == NULL) {
|
if (newfile == NULL) {
|
||||||
com_err(me, errno, "Error creating file %s", tmp_file);
|
com_err(me, errno, "Error creating file %s", tmp_file);
|
||||||
@@ -2032,7 +2032,7 @@ done:
|
@@ -2019,7 +2019,7 @@
|
||||||
|
|
||||||
/* set password in the file */
|
/* set password in the file */
|
||||||
old_mode = umask(0177);
|
old_mode = umask(0177);
|
||||||
- pfile = fopen(file_name, "a+");
|
- pfile = fopen(file_name, "a+");
|
||||||
+ pfile = WRITABLEFOPEN(file_name, "a+");
|
+ pfile = WRITABLEFOPEN(file_name, "a+");
|
||||||
if (pfile == NULL) {
|
if (pfile == NULL) {
|
||||||
com_err(me, errno, "Failed to open file %s: %s", file_name,
|
com_err(me, errno, "Failed to open file %s: %s", file_name,
|
||||||
strerror (errno));
|
strerror (errno));
|
||||||
@@ -2082,7 +2082,7 @@ done:
|
@@ -2069,7 +2069,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
omask = umask(077);
|
omask = umask(077);
|
||||||
- newfile = fopen(tmp_file, "w");
|
- newfile = fopen(tmp_file, "w");
|
||||||
+ newfile = WRITABLEFOPEN(tmp_file, "w");
|
+ newfile = WRITABLEFOPEN(tmp_file, "w");
|
||||||
umask (omask);
|
umask (omask);
|
||||||
if (newfile == NULL) {
|
if (newfile == NULL) {
|
||||||
com_err(me, errno, "Error creating file %s", tmp_file);
|
com_err(me, errno, "Error creating file %s", tmp_file);
|
||||||
diff -up krb5-1.7/src/slave/kpropd.c krb5-1.7/src/slave/kpropd.c
|
diff -up krb5-1.8/src/slave/kpropd.c.selinux-label krb5-1.8/src/slave/kpropd.c
|
||||||
--- krb5-1.7/src/slave/kpropd.c 2008-12-30 00:45:06.000000000 -0500
|
--- krb5-1.8/src/slave/kpropd.c.selinux-label 2009-12-31 17:25:11.000000000 -0500
|
||||||
+++ krb5-1.7/src/slave/kpropd.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/slave/kpropd.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -346,7 +346,7 @@ retry:
|
@@ -328,7 +328,7 @@ retry:
|
||||||
if (!debug && iproprole != IPROP_SLAVE)
|
if (!debug && iproprole != IPROP_SLAVE)
|
||||||
daemon(1, 0);
|
daemon(1, 0);
|
||||||
#ifdef PID_FILE
|
#ifdef PID_FILE
|
||||||
- if ((pidfile = fopen(PID_FILE, "w")) != NULL) {
|
- if ((pidfile = fopen(PID_FILE, "w")) != NULL) {
|
||||||
+ if ((pidfile = WRITABLEFOPEN(PID_FILE, "w")) != NULL) {
|
+ if ((pidfile = WRITABLEFOPEN(PID_FILE, "w")) != NULL) {
|
||||||
fprintf(pidfile, "%d\n", getpid());
|
fprintf(pidfile, "%d\n", getpid());
|
||||||
fclose(pidfile);
|
fclose(pidfile);
|
||||||
} else
|
} else
|
||||||
diff -up krb5-1.7/src/util/profile/prof_file.c krb5-1.7/src/util/profile/prof_file.c
|
diff -up krb5-1.8/src/util/profile/prof_file.c.selinux-label krb5-1.8/src/util/profile/prof_file.c
|
||||||
--- krb5-1.7/src/util/profile/prof_file.c 2008-11-05 11:19:01.000000000 -0500
|
--- krb5-1.8/src/util/profile/prof_file.c.selinux-label 2009-12-27 19:21:20.000000000 -0500
|
||||||
+++ krb5-1.7/src/util/profile/prof_file.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/util/profile/prof_file.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -29,6 +29,7 @@
|
@@ -30,6 +30,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "k5-platform.h"
|
#include "k5-platform.h"
|
||||||
+#include "k5-label.h"
|
+#include "k5-label.h"
|
||||||
|
|
||||||
struct global_shared_profile_data {
|
struct global_shared_profile_data {
|
||||||
/* This is the head of the global list of shared trees */
|
/* This is the head of the global list of shared trees */
|
||||||
@@ -422,7 +423,7 @@ static errcode_t write_data_to_file(prf_
|
@@ -418,7 +419,7 @@ static errcode_t write_data_to_file(prf_
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
|
|
||||||
- f = fopen(new_file, "w");
|
- f = fopen(new_file, "w");
|
||||||
+ f = WRITABLEFOPEN(new_file, "w");
|
+ f = WRITABLEFOPEN(new_file, "w");
|
||||||
if (!f) {
|
if (!f) {
|
||||||
retval = errno;
|
retval = errno;
|
||||||
if (retval == 0)
|
if (retval == 0)
|
||||||
diff -up krb5-1.7/src/util/support/Makefile.in krb5-1.7/src/util/support/Makefile.in
|
diff -up krb5-1.8/src/util/support/Makefile.in.selinux-label krb5-1.8/src/util/support/Makefile.in
|
||||||
--- krb5-1.7/src/util/support/Makefile.in 2009-01-05 15:27:53.000000000 -0500
|
--- krb5-1.8/src/util/support/Makefile.in.selinux-label 2009-11-23 20:25:10.000000000 -0500
|
||||||
+++ krb5-1.7/src/util/support/Makefile.in 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/util/support/Makefile.in 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -38,6 +38,7 @@ PRINTF_OBJ= @PRINTF_OBJ@
|
@@ -54,6 +54,7 @@ IPC_SYMS= \
|
||||||
|
|
||||||
STLIBOBJS= \
|
STLIBOBJS= \
|
||||||
threads.o \
|
threads.o \
|
||||||
@ -547,7 +489,7 @@ diff -up krb5-1.7/src/util/support/Makefile.in krb5-1.7/src/util/support/Makefil
|
|||||||
init-addrinfo.o \
|
init-addrinfo.o \
|
||||||
plugins.o \
|
plugins.o \
|
||||||
errors.o \
|
errors.o \
|
||||||
@@ -86,7 +87,7 @@ SRCS=\
|
@@ -108,7 +109,7 @@ SRCS=\
|
||||||
|
|
||||||
SHLIB_EXPDEPS =
|
SHLIB_EXPDEPS =
|
||||||
# Add -lm if dumping thread stats, for sqrt.
|
# Add -lm if dumping thread stats, for sqrt.
|
||||||
@ -556,9 +498,9 @@ diff -up krb5-1.7/src/util/support/Makefile.in krb5-1.7/src/util/support/Makefil
|
|||||||
SHLIB_DIRS=
|
SHLIB_DIRS=
|
||||||
SHLIB_RDIRS=$(KRB5_LIBDIR)
|
SHLIB_RDIRS=$(KRB5_LIBDIR)
|
||||||
|
|
||||||
diff -up /dev/null krb5-1.7/src/util/support/selinux.c
|
diff -up krb5-1.8/src/util/support/selinux.c.selinux-label krb5-1.8/src/util/support/selinux.c
|
||||||
--- /dev/null 2009-06-04 10:34:55.169007373 -0400
|
--- krb5-1.8/src/util/support/selinux.c.selinux-label 2010-03-05 10:57:23.000000000 -0500
|
||||||
+++ krb5-1.7/src/util/support/selinux.c 2009-06-04 13:47:20.000000000 -0400
|
+++ krb5-1.8/src/util/support/selinux.c 2010-03-05 10:57:23.000000000 -0500
|
||||||
@@ -0,0 +1,346 @@
|
@@ -0,0 +1,346 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Copyright 2007,2008,2009 Red Hat, Inc. All Rights Reserved.
|
+ * Copyright 2007,2008,2009 Red Hat, Inc. All Rights Reserved.
|
@ -3,10 +3,10 @@ neither end is reading. This is a port of a patch which aims to solve that
|
|||||||
problem, but for now it's incomplete because we don't handle partial writes. A
|
problem, but for now it's incomplete because we don't handle partial writes. A
|
||||||
proper non-blocking implementation would require a bit more work.
|
proper non-blocking implementation would require a bit more work.
|
||||||
|
|
||||||
diff -up krb5-1.7/src/appl/bsd/defines.h krb5-1.7/src/appl/bsd/defines.h
|
diff -up krb5-appl-1.0/bsd/defines.h.io krb5-appl-1.0/bsd/defines.h
|
||||||
--- krb5-1.7/src/appl/bsd/defines.h 2008-12-15 15:29:01.000000000 -0500
|
--- krb5-appl-1.0/bsd/defines.h.io 2009-11-16 05:27:04.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/bsd/defines.h 2009-06-04 14:18:48.000000000 -0400
|
+++ krb5-appl-1.0/bsd/defines.h 2010-03-05 11:00:06.000000000 -0500
|
||||||
@@ -34,6 +34,7 @@ extern int kcmd (int *sock, char **ahost
|
@@ -36,6 +36,7 @@ extern int kcmd (int *sock, char **ahost
|
||||||
enum kcmd_proto *protonum /* input and output */
|
enum kcmd_proto *protonum /* input and output */
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -14,10 +14,10 @@ diff -up krb5-1.7/src/appl/bsd/defines.h krb5-1.7/src/appl/bsd/defines.h
|
|||||||
extern int rcmd_stream_read (int fd, char *buf, size_t len, int secondary);
|
extern int rcmd_stream_read (int fd, char *buf, size_t len, int secondary);
|
||||||
extern int rcmd_stream_write (int fd, char *buf, size_t len, int secondary);
|
extern int rcmd_stream_write (int fd, char *buf, size_t len, int secondary);
|
||||||
extern int getport (int * /* portnum */, int * /* addrfamily */);
|
extern int getport (int * /* portnum */, int * /* addrfamily */);
|
||||||
diff -up krb5-1.7/src/appl/bsd/kcmd.c krb5-1.7/src/appl/bsd/kcmd.c
|
diff -up krb5-appl-1.0/bsd/kcmd.c.io krb5-appl-1.0/bsd/kcmd.c
|
||||||
--- krb5-1.7/src/appl/bsd/kcmd.c 2009-04-15 16:07:15.000000000 -0400
|
--- krb5-appl-1.0/bsd/kcmd.c.io 2009-11-16 05:27:04.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/bsd/kcmd.c 2009-06-04 14:18:48.000000000 -0400
|
+++ krb5-appl-1.0/bsd/kcmd.c 2010-03-05 11:00:06.000000000 -0500
|
||||||
@@ -686,6 +686,11 @@ void rcmd_stream_init_normal()
|
@@ -767,6 +767,11 @@ void rcmd_stream_init_normal()
|
||||||
output = twrite;
|
output = twrite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,8 +29,8 @@ diff -up krb5-1.7/src/appl/bsd/kcmd.c krb5-1.7/src/appl/bsd/kcmd.c
|
|||||||
void rcmd_stream_init_krb5(in_keyblock, encrypt_flag, lencheck, am_client,
|
void rcmd_stream_init_krb5(in_keyblock, encrypt_flag, lencheck, am_client,
|
||||||
protonum)
|
protonum)
|
||||||
krb5_keyblock *in_keyblock;
|
krb5_keyblock *in_keyblock;
|
||||||
@@ -846,7 +851,8 @@ static int v5_des_read(fd, buf, len, sec
|
@@ -927,7 +932,8 @@ static int v5_des_read(fd, buf, len, sec
|
||||||
cc = krb5_net_read(bsd_context, fd, &c, 1);
|
cc = full_read(fd, &c, 1);
|
||||||
/* we should check for non-blocking here, but we'd have
|
/* we should check for non-blocking here, but we'd have
|
||||||
to make it save partial reads as well. */
|
to make it save partial reads as well. */
|
||||||
- if (cc <= 0) return cc; /* read error */
|
- if (cc <= 0) return cc; /* read error */
|
||||||
@ -39,10 +39,10 @@ diff -up krb5-1.7/src/appl/bsd/kcmd.c krb5-1.7/src/appl/bsd/kcmd.c
|
|||||||
if (cc == 1) {
|
if (cc == 1) {
|
||||||
if (c == 0 || !do_lencheck) break;
|
if (c == 0 || !do_lencheck) break;
|
||||||
}
|
}
|
||||||
diff -up krb5-1.7/src/appl/bsd/krsh.c krb5-1.7/src/appl/bsd/krsh.c
|
diff -up krb5-appl-1.0/bsd/krsh.c.io krb5-appl-1.0/bsd/krsh.c
|
||||||
--- krb5-1.7/src/appl/bsd/krsh.c 2009-06-04 14:18:47.000000000 -0400
|
--- krb5-appl-1.0/bsd/krsh.c.io 2010-03-05 11:00:05.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/bsd/krsh.c 2009-06-04 14:18:48.000000000 -0400
|
+++ krb5-appl-1.0/bsd/krsh.c 2010-03-05 11:00:06.000000000 -0500
|
||||||
@@ -115,10 +115,11 @@ main(argc, argv0)
|
@@ -117,10 +117,11 @@ main(argc, argv0)
|
||||||
char **argv0;
|
char **argv0;
|
||||||
{
|
{
|
||||||
int rem, pid = 0;
|
int rem, pid = 0;
|
||||||
@ -55,7 +55,7 @@ diff -up krb5-1.7/src/appl/bsd/krsh.c krb5-1.7/src/appl/bsd/krsh.c
|
|||||||
int one = 1;
|
int one = 1;
|
||||||
struct servent *sp;
|
struct servent *sp;
|
||||||
struct servent defaultservent;
|
struct servent defaultservent;
|
||||||
@@ -508,9 +509,14 @@ main(argc, argv0)
|
@@ -510,9 +511,14 @@ main(argc, argv0)
|
||||||
FD_ZERO(&readfrom);
|
FD_ZERO(&readfrom);
|
||||||
FD_SET(rfd2, &readfrom);
|
FD_SET(rfd2, &readfrom);
|
||||||
FD_SET(rem, &readfrom);
|
FD_SET(rem, &readfrom);
|
||||||
@ -71,7 +71,7 @@ diff -up krb5-1.7/src/appl/bsd/krsh.c krb5-1.7/src/appl/bsd/krsh.c
|
|||||||
if (errno != EINTR) {
|
if (errno != EINTR) {
|
||||||
perror("select");
|
perror("select");
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -518,22 +524,38 @@ main(argc, argv0)
|
@@ -520,22 +526,38 @@ main(argc, argv0)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (FD_ISSET(rfd2, &ready)) {
|
if (FD_ISSET(rfd2, &ready)) {
|
||||||
@ -124,10 +124,10 @@ diff -up krb5-1.7/src/appl/bsd/krsh.c krb5-1.7/src/appl/bsd/krsh.c
|
|||||||
}
|
}
|
||||||
} while (FD_ISSET(rem, &readfrom) || FD_ISSET(rfd2, &readfrom));
|
} while (FD_ISSET(rem, &readfrom) || FD_ISSET(rfd2, &readfrom));
|
||||||
if (nflag == 0)
|
if (nflag == 0)
|
||||||
diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
diff -up krb5-appl-1.0/bsd/krshd.c.io krb5-appl-1.0/bsd/krshd.c
|
||||||
--- krb5-1.7/src/appl/bsd/krshd.c 2009-06-04 14:18:47.000000000 -0400
|
--- krb5-appl-1.0/bsd/krshd.c.io 2010-03-05 11:00:05.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/bsd/krshd.c 2009-06-04 14:18:48.000000000 -0400
|
+++ krb5-appl-1.0/bsd/krshd.c 2010-03-05 11:00:06.000000000 -0500
|
||||||
@@ -583,7 +583,8 @@ void doit(f, fromp)
|
@@ -585,7 +585,8 @@ void doit(f, fromp)
|
||||||
short port;
|
short port;
|
||||||
int pv[2], pw[2], px[2], cc;
|
int pv[2], pw[2], px[2], cc;
|
||||||
fd_set ready, readfrom;
|
fd_set ready, readfrom;
|
||||||
@ -137,7 +137,7 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|||||||
struct sockaddr_storage localaddr;
|
struct sockaddr_storage localaddr;
|
||||||
#ifdef POSIX_SIGNALS
|
#ifdef POSIX_SIGNALS
|
||||||
struct sigaction sa;
|
struct sigaction sa;
|
||||||
@@ -1214,6 +1215,10 @@ void doit(f, fromp)
|
@@ -1216,6 +1217,10 @@ void doit(f, fromp)
|
||||||
if (pw[0] > maxfd)
|
if (pw[0] > maxfd)
|
||||||
maxfd = pw[0];
|
maxfd = pw[0];
|
||||||
|
|
||||||
@ -148,7 +148,7 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|||||||
/* read from f, write to px[1] -- child stdin */
|
/* read from f, write to px[1] -- child stdin */
|
||||||
/* read from s, signal child */
|
/* read from s, signal child */
|
||||||
/* read from pv[0], write to s -- child stderr */
|
/* read from pv[0], write to s -- child stderr */
|
||||||
@@ -1221,36 +1226,47 @@ void doit(f, fromp)
|
@@ -1223,36 +1228,47 @@ void doit(f, fromp)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
ready = readfrom;
|
ready = readfrom;
|
||||||
@ -204,7 +204,7 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|||||||
}
|
}
|
||||||
if (port&&FD_ISSET(s, &ready)) {
|
if (port&&FD_ISSET(s, &ready)) {
|
||||||
/* read from the alternate channel, signal the child */
|
/* read from the alternate channel, signal the child */
|
||||||
@@ -1268,12 +1284,15 @@ void doit(f, fromp)
|
@@ -1270,12 +1286,15 @@ void doit(f, fromp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (FD_ISSET(f, &ready)) {
|
if (FD_ISSET(f, &ready)) {
|
||||||
@ -221,7 +221,7 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|||||||
} else {
|
} else {
|
||||||
int wcc;
|
int wcc;
|
||||||
wcc = write(px[1], buf, (unsigned) cc);
|
wcc = write(px[1], buf, (unsigned) cc);
|
||||||
@@ -1281,17 +1300,22 @@ void doit(f, fromp)
|
@@ -1283,17 +1302,22 @@ void doit(f, fromp)
|
||||||
/* pipe closed, don't read any more */
|
/* pipe closed, don't read any more */
|
||||||
/* might check for EPIPE */
|
/* might check for EPIPE */
|
||||||
(void) close(px[1]);
|
(void) close(px[1]);
|
@ -8,25 +8,254 @@
|
|||||||
instead of fseek(), which takes a long and might not handle the full
|
instead of fseek(), which takes a long and might not handle the full
|
||||||
range of values.
|
range of values.
|
||||||
RT#6524
|
RT#6524
|
||||||
Index: krb5/src/appl/gssftp/configure.in
|
|
||||||
===================================================================
|
diff -up krb5-appl-1.0/bsd/krcp.c.largefile krb5-appl-1.0/bsd/krcp.c
|
||||||
--- krb5/src/appl/gssftp/configure.in (revision 22425)
|
--- krb5-appl-1.0/bsd/krcp.c.largefile 2010-03-05 11:06:23.000000000 -0500
|
||||||
+++ krb5/src/appl/gssftp/configure.in (working copy)
|
+++ krb5-appl-1.0/bsd/krcp.c 2010-03-05 11:06:24.000000000 -0500
|
||||||
@@ -12,6 +12,9 @@
|
@@ -748,8 +748,13 @@ void source(argc, argv)
|
||||||
AC_HEADER_STDARG
|
continue;
|
||||||
AC_CHECK_HEADER(termios.h,[AC_CHECK_FUNC(cfsetispeed,AC_DEFINE(POSIX_TERMIOS,1,[Define if POSIX termios interface found]))])
|
}
|
||||||
AC_CHECK_HEADERS(unistd.h stdlib.h string.h sys/select.h sys/sockio.h paths.h)
|
}
|
||||||
|
+#ifdef HAVE_LONG_LONG_INT
|
||||||
|
+ (void) snprintf(buf, sizeof(buf), "C%04o %lld %s\n",
|
||||||
|
+ (int) stb.st_mode&07777, (long long) stb.st_size, last);
|
||||||
|
+#else
|
||||||
|
(void) snprintf(buf, sizeof(buf), "C%04o %ld %s\n",
|
||||||
|
(int) stb.st_mode&07777, (long ) stb.st_size, last);
|
||||||
|
+#endif
|
||||||
|
(void) rcmd_stream_write(rem, buf, strlen(buf), 0);
|
||||||
|
if (response() < 0) {
|
||||||
|
(void) close(f);
|
||||||
|
diff -up krb5-appl-1.0/configure.ac.largefile krb5-appl-1.0/configure.ac
|
||||||
|
--- krb5-appl-1.0/configure.ac.largefile 2010-03-05 11:06:23.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/configure.ac 2010-03-05 11:06:24.000000000 -0500
|
||||||
|
@@ -103,6 +103,10 @@ case $host in
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
+AC_SYS_LARGEFILE
|
+AC_SYS_LARGEFILE
|
||||||
+AC_FUNC_FSEEKO
|
+AC_FUNC_FSEEKO
|
||||||
+AC_CHECK_TYPES([long long])
|
+AC_TYPE_LONG_LONG_INT
|
||||||
CHECK_UTMP
|
+AC_TYPE_UNSIGNED_LONG_LONG_INT
|
||||||
DECLARE_SYS_ERRLIST
|
AC_CHECK_FUNCS(_getpty cgetent getcwd getenv gettosbyname getusershell getutmp)
|
||||||
AC_REPLACE_FUNCS(getdtablesize)
|
AC_CHECK_FUNCS(getutmpx grantpt inet_aton initgroups isatty killpg killpg)
|
||||||
Index: krb5/src/appl/gssftp/ftp/ftp_var.h
|
AC_CHECK_FUNCS(line_push logwtmp openpty ptsname revoke rmufile rresvport_af)
|
||||||
===================================================================
|
diff -up krb5-appl-1.0/gssftp/ftpd/ftpcmd.y.largefile krb5-appl-1.0/gssftp/ftpd/ftpcmd.y
|
||||||
--- krb5/src/appl/gssftp/ftp/ftp_var.h (revision 22425)
|
--- krb5-appl-1.0/gssftp/ftpd/ftpcmd.y.largefile 2009-11-05 15:15:06.000000000 -0500
|
||||||
+++ krb5/src/appl/gssftp/ftp/ftp_var.h (working copy)
|
+++ krb5-appl-1.0/gssftp/ftpd/ftpcmd.y 2010-03-05 11:06:24.000000000 -0500
|
||||||
@@ -46,13 +46,19 @@
|
@@ -1499,12 +1499,20 @@ char *filename;
|
||||||
|
(stbuf.st_mode&S_IFMT) != S_IFREG)
|
||||||
|
reply(550, "%s: not a plain file.", filename);
|
||||||
|
else
|
||||||
|
+#ifdef HAVE_LONG_LONG_INT
|
||||||
|
+ reply(213, "%llu", (long long) stbuf.st_size);
|
||||||
|
+#else
|
||||||
|
reply(213, "%lu", (long) stbuf.st_size);
|
||||||
|
+#endif
|
||||||
|
break;}
|
||||||
|
case TYPE_A: {
|
||||||
|
FILE *fin;
|
||||||
|
register int c;
|
||||||
|
+#ifdef HAVE_LONG_LONG_INT
|
||||||
|
+ register long long count;
|
||||||
|
+#else
|
||||||
|
register long count;
|
||||||
|
+#endif
|
||||||
|
struct stat stbuf;
|
||||||
|
fin = fopen(filename, "r");
|
||||||
|
if (fin == NULL) {
|
||||||
|
@@ -1526,7 +1534,11 @@ char *filename;
|
||||||
|
}
|
||||||
|
(void) fclose(fin);
|
||||||
|
|
||||||
|
+#ifdef HAVE_LONG_LONG_INT
|
||||||
|
+ reply(213, "%lld", count);
|
||||||
|
+#else
|
||||||
|
reply(213, "%ld", count);
|
||||||
|
+#endif
|
||||||
|
break;}
|
||||||
|
default:
|
||||||
|
reply(504, "SIZE not implemented for Type %c.", "?AEIL"[type]);
|
||||||
|
diff -up krb5-appl-1.0/gssftp/ftpd/ftpd.c.largefile krb5-appl-1.0/gssftp/ftpd/ftpd.c
|
||||||
|
--- krb5-appl-1.0/gssftp/ftpd/ftpd.c.largefile 2010-03-05 11:06:23.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/gssftp/ftpd/ftpd.c 2010-03-05 11:06:24.000000000 -0500
|
||||||
|
@@ -1205,8 +1205,13 @@ retrieve(cmd, name)
|
||||||
|
done:
|
||||||
|
(*closefunc)(fin);
|
||||||
|
if (logging > 2 && !cmd) {
|
||||||
|
+#ifdef HAVE_UNSIGNED_LONG_LONG_INT
|
||||||
|
+ syslog(LOG_NOTICE, "get: %llu bytes transferred",
|
||||||
|
+ (unsigned long long) byte_count);
|
||||||
|
+#else
|
||||||
|
syslog(LOG_NOTICE, "get: %lu bytes transferred",
|
||||||
|
(unsigned long) byte_count);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1252,7 +1257,7 @@ store_file(name, fmode, unique)
|
||||||
|
* because we are changing from reading to
|
||||||
|
* writing.
|
||||||
|
*/
|
||||||
|
- if (fseek(fout, 0L, L_INCR) < 0) {
|
||||||
|
+ if (FSEEK(fout, 0L, L_INCR) < 0) {
|
||||||
|
perror_reply(550, name);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
@@ -1277,8 +1282,13 @@ store_file(name, fmode, unique)
|
||||||
|
done:
|
||||||
|
(*closefunc)(fout);
|
||||||
|
if (logging > 2) {
|
||||||
|
+#ifdef HAVE_UNSIGNED_LONG_LONG_INT
|
||||||
|
+ syslog(LOG_NOTICE, "put: %llu bytes transferred",
|
||||||
|
+ (unsigned long long) byte_count);
|
||||||
|
+#else
|
||||||
|
syslog(LOG_NOTICE, "put: %lu bytes transferred",
|
||||||
|
(unsigned long) byte_count);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1341,8 +1351,13 @@ dataconn(name, size, fmode)
|
||||||
|
byte_count = 0;
|
||||||
|
if (size != (off_t) -1)
|
||||||
|
/* cast size to long in case sizeof(off_t) > sizeof(long) */
|
||||||
|
+#ifdef HAVE_LONG_LONG_INT
|
||||||
|
+ (void) snprintf (sizebuf, sizeof(sizebuf), " (%lld bytes)",
|
||||||
|
+ (long long)size);
|
||||||
|
+#else
|
||||||
|
(void) snprintf (sizebuf, sizeof(sizebuf), " (%ld bytes)",
|
||||||
|
(long)size);
|
||||||
|
+#endif
|
||||||
|
else
|
||||||
|
sizebuf[0] = '\0';
|
||||||
|
if (pdata >= 0) {
|
||||||
|
@@ -2063,6 +2078,15 @@ myoob(sig)
|
||||||
|
siglongjmp(urgcatch, 1);
|
||||||
|
}
|
||||||
|
if (strcmp(cp, "STAT") == 0) {
|
||||||
|
+#ifdef HAVE_LONG_LONG_INT
|
||||||
|
+ if (file_size != (off_t) -1)
|
||||||
|
+ reply(213, "Status: %llu of %llu bytes transferred",
|
||||||
|
+ (unsigned long long) byte_count,
|
||||||
|
+ (unsigned long long) file_size);
|
||||||
|
+ else
|
||||||
|
+ reply(213, "Status: %llu bytes transferred",
|
||||||
|
+ (unsigned long long) byte_count);
|
||||||
|
+#else
|
||||||
|
if (file_size != (off_t) -1)
|
||||||
|
reply(213, "Status: %lu of %lu bytes transferred",
|
||||||
|
(unsigned long) byte_count,
|
||||||
|
@@ -2070,6 +2094,7 @@ myoob(sig)
|
||||||
|
else
|
||||||
|
reply(213, "Status: %lu bytes transferred",
|
||||||
|
(unsigned long) byte_count);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -up krb5-appl-1.0/gssftp/ftpd/ftpd_var.h.largefile krb5-appl-1.0/gssftp/ftpd/ftpd_var.h
|
||||||
|
--- krb5-appl-1.0/gssftp/ftpd/ftpd_var.h.largefile 2009-11-05 15:15:06.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/gssftp/ftpd/ftpd_var.h 2010-03-05 11:06:24.000000000 -0500
|
||||||
|
@@ -41,6 +41,12 @@
|
||||||
|
char *radix_error (int);
|
||||||
|
int radix_encode (unsigned char *, unsigned char *, size_t *, int);
|
||||||
|
|
||||||
|
+#ifdef HAVE_FSEEKO
|
||||||
|
+#define FSEEK(fd, offset, whence) fseeko(fd, (off_t) offset, whence)
|
||||||
|
+#else
|
||||||
|
+#define FSEEK(fd, offset, whence) fseek(fd, (long) offset, whence)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* ftpd.c */
|
||||||
|
void ack(char *);
|
||||||
|
int auth_data(unsigned char *);
|
||||||
|
diff -up krb5-appl-1.0/gssftp/ftp/ftp.c.largefile krb5-appl-1.0/gssftp/ftp/ftp.c
|
||||||
|
--- krb5-appl-1.0/gssftp/ftp/ftp.c.largefile 2010-03-05 11:06:24.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/gssftp/ftp/ftp.c 2010-03-05 11:06:24.000000000 -0500
|
||||||
|
@@ -156,7 +156,11 @@ void user_gss_error (OM_uint32, OM_uint3
|
||||||
|
|
||||||
|
static void proxtrans (char *, char *, char *);
|
||||||
|
static int initconn (void);
|
||||||
|
+#ifdef HAVE_LONG_LONG_INT
|
||||||
|
+static void ptransfer (char *, long long, struct timeval *, struct timeval *);
|
||||||
|
+#else
|
||||||
|
static void ptransfer (char *, long, struct timeval *, struct timeval *);
|
||||||
|
+#endif
|
||||||
|
static void abort_remote (FILE *);
|
||||||
|
static void tvsub (struct timeval *, struct timeval *, struct timeval *);
|
||||||
|
static char *gunique (char *);
|
||||||
|
@@ -787,7 +791,11 @@ void sendrequest(char *cmd, char *local,
|
||||||
|
FILE *volatile fin, *volatile dout = 0;
|
||||||
|
int (*volatile closefunc)();
|
||||||
|
volatile sig_t oldintr, oldintp;
|
||||||
|
+#ifdef HAVE_LONG_LONG_INT
|
||||||
|
+ volatile long long bytes = 0, hashbytes = HASHBYTES;
|
||||||
|
+#else
|
||||||
|
volatile long bytes = 0, hashbytes = HASHBYTES;
|
||||||
|
+#endif
|
||||||
|
char *volatile lmode;
|
||||||
|
char buf[FTP_BUFSIZ], *bufp;
|
||||||
|
|
||||||
|
@@ -884,7 +892,7 @@ void sendrequest(char *cmd, char *local,
|
||||||
|
|
||||||
|
if (restart_point &&
|
||||||
|
(strcmp(cmd, "STOR") == 0 || strcmp(cmd, "APPE") == 0)) {
|
||||||
|
- if (fseek(fin, (long) restart_point, 0) < 0) {
|
||||||
|
+ if (FSEEK(fin, restart_point, 0) < 0) {
|
||||||
|
fprintf(stderr, "local: %s: %s\n", local,
|
||||||
|
strerror(errno));
|
||||||
|
restart_point = 0;
|
||||||
|
@@ -1279,7 +1287,7 @@ void recvrequest(char *cmd, char *volati
|
||||||
|
if (restart_point) {
|
||||||
|
register int i, n, ch;
|
||||||
|
|
||||||
|
- if (fseek(fout, 0L, L_SET) < 0)
|
||||||
|
+ if (FSEEK(fout, 0L, L_SET) < 0)
|
||||||
|
goto done;
|
||||||
|
n = restart_point;
|
||||||
|
for (i = 0; i++ < n;) {
|
||||||
|
@@ -1288,7 +1296,7 @@ void recvrequest(char *cmd, char *volati
|
||||||
|
if (ch == '\n')
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
- if (fseek(fout, 0L, L_INCR) < 0) {
|
||||||
|
+ if (FSEEK(fout, 0L, L_INCR) < 0) {
|
||||||
|
done:
|
||||||
|
fprintf(stderr, "local: %s: %s\n", local,
|
||||||
|
strerror(errno));
|
||||||
|
@@ -1553,8 +1561,13 @@ dataconn(char *lmode)
|
||||||
|
return (FDOPEN_SOCKET(data, lmode));
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef HAVE_LONG_LONG_INT
|
||||||
|
+static void ptransfer(char *direction, long long bytes,
|
||||||
|
+ struct timeval *t0, struct timeval *t1)
|
||||||
|
+#else
|
||||||
|
static void ptransfer(char *direction, long bytes,
|
||||||
|
struct timeval *t0, struct timeval *t1)
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
struct timeval td;
|
||||||
|
float s, kbs;
|
||||||
|
@@ -1564,8 +1577,13 @@ static void ptransfer(char *direction, l
|
||||||
|
s = td.tv_sec + (td.tv_usec / 1000000.);
|
||||||
|
#define nz(x) ((x) == 0 ? 1 : (x))
|
||||||
|
kbs = (bytes / nz(s))/1024.0;
|
||||||
|
+#ifdef HAVE_LONG_LONG_INT
|
||||||
|
+ printf("%lld bytes %s in %.2g seconds (%.2g Kbytes/s)\n",
|
||||||
|
+ bytes, direction, s, kbs);
|
||||||
|
+#else
|
||||||
|
printf("%ld bytes %s in %.2g seconds (%.2g Kbytes/s)\n",
|
||||||
|
bytes, direction, s, kbs);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -up krb5-appl-1.0/gssftp/ftp/ftp_var.h.largefile krb5-appl-1.0/gssftp/ftp/ftp_var.h
|
||||||
|
--- krb5-appl-1.0/gssftp/ftp/ftp_var.h.largefile 2010-03-05 11:06:24.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/gssftp/ftp/ftp_var.h 2010-03-05 11:06:24.000000000 -0500
|
||||||
|
@@ -46,12 +46,18 @@ FILE* fdopen_socket(SOCKET s, char* mode
|
||||||
#define FDOPEN_SOCKET(s, mode) fdopen_socket(s, mode)
|
#define FDOPEN_SOCKET(s, mode) fdopen_socket(s, mode)
|
||||||
#define SOCKETNO(fd) _get_osfhandle(fd)
|
#define SOCKETNO(fd) _get_osfhandle(fd)
|
||||||
#define PERROR_SOCKET(str) do { errno = SOCKET_ERRNO; perror(str); } while(0)
|
#define PERROR_SOCKET(str) do { errno = SOCKET_ERRNO; perror(str); } while(0)
|
||||||
@ -41,254 +270,7 @@ Index: krb5/src/appl/gssftp/ftp/ftp_var.h
|
|||||||
+#define FSEEK(fd, offset, whence) fseeko(fd, (off_t) offset, whence)
|
+#define FSEEK(fd, offset, whence) fseeko(fd, (off_t) offset, whence)
|
||||||
+#else
|
+#else
|
||||||
+#define FSEEK(fd, offset, whence) fseek(fd, (long) offset, whence)
|
+#define FSEEK(fd, offset, whence) fseek(fd, (long) offset, whence)
|
||||||
#endif
|
|
||||||
+#endif
|
+#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
typedef void (*sig_t)(int);
|
|
||||||
Index: krb5/src/appl/gssftp/ftp/ftp.c
|
|
||||||
===================================================================
|
|
||||||
--- krb5/src/appl/gssftp/ftp/ftp.c (revision 22425)
|
|
||||||
+++ krb5/src/appl/gssftp/ftp/ftp.c (working copy)
|
|
||||||
@@ -150,7 +150,11 @@
|
|
||||||
|
|
||||||
static void proxtrans (char *, char *, char *);
|
|
||||||
static int initconn (void);
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+static void ptransfer (char *, long long, struct timeval *, struct timeval *);
|
|
||||||
+#else
|
|
||||||
static void ptransfer (char *, long, struct timeval *, struct timeval *);
|
|
||||||
+#endif
|
|
||||||
static void abort_remote (FILE *);
|
|
||||||
static void tvsub (struct timeval *, struct timeval *, struct timeval *);
|
|
||||||
static char *gunique (char *);
|
|
||||||
@@ -775,7 +779,11 @@
|
|
||||||
FILE *volatile fin, *volatile dout = 0;
|
|
||||||
int (*volatile closefunc)();
|
|
||||||
volatile sig_t oldintr, oldintp;
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+ volatile long long bytes = 0, hashbytes = HASHBYTES;
|
|
||||||
+#else
|
|
||||||
volatile long bytes = 0, hashbytes = HASHBYTES;
|
|
||||||
+#endif
|
|
||||||
char *volatile lmode;
|
|
||||||
unsigned char buf[FTP_BUFSIZ], *bufp;
|
|
||||||
|
|
||||||
@@ -872,7 +880,7 @@
|
|
||||||
|
|
||||||
if (restart_point &&
|
|
||||||
(strcmp(cmd, "STOR") == 0 || strcmp(cmd, "APPE") == 0)) {
|
|
||||||
- if (fseek(fin, (long) restart_point, 0) < 0) {
|
|
||||||
+ if (FSEEK(fin, restart_point, 0) < 0) {
|
|
||||||
fprintf(stderr, "local: %s: %s\n", local,
|
|
||||||
strerror(errno));
|
|
||||||
restart_point = 0;
|
|
||||||
@@ -1266,7 +1274,7 @@
|
|
||||||
if (restart_point) {
|
|
||||||
register int i, n, ch;
|
|
||||||
|
|
||||||
- if (fseek(fout, 0L, L_SET) < 0)
|
|
||||||
+ if (FSEEK(fout, 0L, L_SET) < 0)
|
|
||||||
goto done;
|
|
||||||
n = restart_point;
|
|
||||||
for (i = 0; i++ < n;) {
|
|
||||||
@@ -1275,7 +1283,7 @@
|
|
||||||
if (ch == '\n')
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
- if (fseek(fout, 0L, L_INCR) < 0) {
|
|
||||||
+ if (FSEEK(fout, 0L, L_INCR) < 0) {
|
|
||||||
done:
|
|
||||||
fprintf(stderr, "local: %s: %s\n", local,
|
|
||||||
strerror(errno));
|
|
||||||
@@ -1538,8 +1546,13 @@
|
|
||||||
return (FDOPEN_SOCKET(data, lmode));
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+static void ptransfer(char *direction, long long bytes,
|
|
||||||
+ struct timeval *t0, struct timeval *t1)
|
|
||||||
+#else
|
|
||||||
static void ptransfer(char *direction, long bytes,
|
|
||||||
struct timeval *t0, struct timeval *t1)
|
|
||||||
+#endif
|
|
||||||
{
|
|
||||||
struct timeval td;
|
|
||||||
float s, kbs;
|
|
||||||
@@ -1549,8 +1562,13 @@
|
|
||||||
s = td.tv_sec + (td.tv_usec / 1000000.);
|
|
||||||
#define nz(x) ((x) == 0 ? 1 : (x))
|
|
||||||
kbs = (bytes / nz(s))/1024.0;
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+ printf("%lld bytes %s in %.2g seconds (%.2g Kbytes/s)\n",
|
|
||||||
+ bytes, direction, s, kbs);
|
|
||||||
+#else
|
|
||||||
printf("%ld bytes %s in %.2g seconds (%.2g Kbytes/s)\n",
|
|
||||||
bytes, direction, s, kbs);
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Index: krb5/src/appl/gssftp/ftpd/ftpcmd.y
|
|
||||||
===================================================================
|
|
||||||
--- krb5/src/appl/gssftp/ftpd/ftpcmd.y (revision 22425)
|
|
||||||
+++ krb5/src/appl/gssftp/ftpd/ftpcmd.y (working copy)
|
|
||||||
@@ -1497,12 +1497,20 @@
|
|
||||||
(stbuf.st_mode&S_IFMT) != S_IFREG)
|
|
||||||
reply(550, "%s: not a plain file.", filename);
|
|
||||||
else
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+ reply(213, "%llu", (long long) stbuf.st_size);
|
|
||||||
+#else
|
|
||||||
reply(213, "%lu", (long) stbuf.st_size);
|
|
||||||
+#endif
|
|
||||||
break;}
|
|
||||||
case TYPE_A: {
|
|
||||||
FILE *fin;
|
|
||||||
register int c;
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+ register long long count;
|
|
||||||
+#else
|
|
||||||
register long count;
|
|
||||||
+#endif
|
|
||||||
struct stat stbuf;
|
|
||||||
fin = fopen(filename, "r");
|
|
||||||
if (fin == NULL) {
|
|
||||||
@@ -1524,7 +1532,11 @@
|
|
||||||
}
|
|
||||||
(void) fclose(fin);
|
|
||||||
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+ reply(213, "%lld", count);
|
|
||||||
+#else
|
|
||||||
reply(213, "%ld", count);
|
|
||||||
+#endif
|
|
||||||
break;}
|
|
||||||
default:
|
|
||||||
reply(504, "SIZE not implemented for Type %c.", "?AEIL"[type]);
|
|
||||||
Index: krb5/src/appl/gssftp/ftpd/ftpd_var.h
|
|
||||||
===================================================================
|
|
||||||
--- krb5/src/appl/gssftp/ftpd/ftpd_var.h (revision 22425)
|
|
||||||
+++ krb5/src/appl/gssftp/ftpd/ftpd_var.h (working copy)
|
|
||||||
@@ -41,6 +41,12 @@
|
|
||||||
char *radix_error (int);
|
|
||||||
int radix_encode (unsigned char *, unsigned char *, int *, int);
|
|
||||||
|
|
||||||
+#ifdef HAVE_FSEEKO
|
|
||||||
+#define FSEEK(fd, offset, whence) fseeko(fd, (off_t) offset, whence)
|
|
||||||
+#else
|
|
||||||
+#define FSEEK(fd, offset, whence) fseek(fd, (long) offset, whence)
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/* ftpd.c */
|
|
||||||
void ack(char *);
|
|
||||||
int auth_data(char *);
|
|
||||||
Index: krb5/src/appl/gssftp/ftpd/ftpd.c
|
|
||||||
===================================================================
|
|
||||||
--- krb5/src/appl/gssftp/ftpd/ftpd.c (revision 22425)
|
|
||||||
+++ krb5/src/appl/gssftp/ftpd/ftpd.c (working copy)
|
|
||||||
@@ -1146,7 +1146,11 @@
|
|
||||||
done:
|
|
||||||
(*closefunc)(fin);
|
|
||||||
if (logging > 2 && !cmd)
|
|
||||||
- syslog(LOG_NOTICE, "get: %i bytes transferred", byte_count);
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+ syslog(LOG_NOTICE, "get: %lld bytes transferred", (long long) byte_count);
|
|
||||||
+#else
|
|
||||||
+ syslog(LOG_NOTICE, "get: %ld bytes transferred", (long) byte_count);
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
@@ -1191,7 +1195,7 @@
|
|
||||||
* because we are changing from reading to
|
|
||||||
* writing.
|
|
||||||
*/
|
|
||||||
- if (fseek(fout, 0L, L_INCR) < 0) {
|
|
||||||
+ if (FSEEK(fout, 0L, L_INCR) < 0) {
|
|
||||||
perror_reply(550, name);
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
@@ -1216,7 +1220,11 @@
|
|
||||||
done:
|
|
||||||
(*closefunc)(fout);
|
|
||||||
if (logging > 2)
|
|
||||||
- syslog(LOG_NOTICE, "put: %i bytes transferred", byte_count);
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+ syslog(LOG_NOTICE, "get: %lld bytes transferred", byte_count);
|
|
||||||
+#else
|
|
||||||
+ syslog(LOG_NOTICE, "get: %ld bytes transferred", (long) byte_count);
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
FILE *
|
|
||||||
@@ -1278,8 +1286,13 @@
|
|
||||||
byte_count = 0;
|
|
||||||
if (size != (off_t) -1)
|
|
||||||
/* cast size to long in case sizeof(off_t) > sizeof(long) */
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+ (void) snprintf (sizebuf, sizeof(sizebuf), " (%lld bytes)",
|
|
||||||
+ (long long)size);
|
|
||||||
+#else
|
|
||||||
(void) snprintf (sizebuf, sizeof(sizebuf), " (%ld bytes)",
|
|
||||||
(long)size);
|
|
||||||
+#endif
|
|
||||||
else
|
|
||||||
sizebuf[0] = '\0';
|
|
||||||
if (pdata >= 0) {
|
|
||||||
@@ -1991,13 +2004,23 @@
|
|
||||||
siglongjmp(urgcatch, 1);
|
|
||||||
}
|
|
||||||
if (strcmp(cp, "STAT") == 0) {
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
if (file_size != (off_t) -1)
|
|
||||||
+ reply(213, "Status: %llu of %llu bytes transferred",
|
|
||||||
+ (unsigned long long) byte_count,
|
|
||||||
+ (unsigned long long) file_size);
|
|
||||||
+ else
|
|
||||||
+ reply(213, "Status: %llu bytes transferred",
|
|
||||||
+ (unsigned long long) byte_count);
|
|
||||||
+#else
|
|
||||||
+ if (file_size != (off_t) -1)
|
|
||||||
reply(213, "Status: %lu of %lu bytes transferred",
|
|
||||||
(unsigned long) byte_count,
|
|
||||||
(unsigned long) file_size);
|
|
||||||
else
|
|
||||||
reply(213, "Status: %lu bytes transferred",
|
|
||||||
(unsigned long) byte_count);
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Index: krb5/src/appl/bsd/configure.in
|
|
||||||
===================================================================
|
|
||||||
--- krb5/src/appl/bsd/configure.in (revision 22425)
|
|
||||||
+++ krb5/src/appl/bsd/configure.in (working copy)
|
|
||||||
@@ -51,6 +51,9 @@
|
|
||||||
AC_TYPE_MODE_T
|
|
||||||
AC_CHECK_FUNCS(isatty inet_aton getenv gettosbyname killpg initgroups setpriority setreuid setresuid waitpid setsid ptsname setlogin tcgetpgrp tcsetpgrp setpgid strsave utimes rmufile rresvport_af)
|
|
||||||
AC_CHECK_HEADERS(unistd.h stdlib.h string.h sys/filio.h sys/sockio.h sys/label.h sys/tty.h ttyent.h lastlog.h sys/select.h sys/ptyvar.h utmp.h sys/time.h sys/ioctl_compat.h paths.h arpa/nameser.h)
|
|
||||||
+AC_SYS_LARGEFILE
|
|
||||||
+AC_FUNC_FSEEKO
|
|
||||||
+AC_CHECK_TYPES([long long])
|
|
||||||
AC_HEADER_STDARG
|
|
||||||
AC_REPLACE_FUNCS(getdtablesize)
|
|
||||||
dnl
|
|
||||||
Index: krb5/src/appl/bsd/krcp.c
|
|
||||||
===================================================================
|
|
||||||
--- krb5/src/appl/bsd/krcp.c (revision 22425)
|
|
||||||
+++ krb5/src/appl/bsd/krcp.c (working copy)
|
|
||||||
@@ -764,8 +764,13 @@
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+#ifdef HAVE_LONG_LONG
|
|
||||||
+ (void) snprintf(buf, sizeof(buf), "C%04o %lld %s\n",
|
|
||||||
+ (int) stb.st_mode&07777, (long long) stb.st_size, last);
|
|
||||||
+#else
|
|
||||||
(void) snprintf(buf, sizeof(buf), "C%04o %ld %s\n",
|
|
||||||
(int) stb.st_mode&07777, (long ) stb.st_size, last);
|
|
||||||
+#endif
|
|
||||||
(void) rcmd_stream_write(rem, buf, strlen(buf), 0);
|
|
||||||
if (response() < 0) {
|
|
||||||
(void) close(f);
|
|
@ -2,10 +2,10 @@ Change to the user's directory after dropping privileges, in case it is only
|
|||||||
accessible to the user (for example, if it's in NFS with root squashing).
|
accessible to the user (for example, if it's in NFS with root squashing).
|
||||||
Incomplete - we probably need to do the same for rshd and ftpd.
|
Incomplete - we probably need to do the same for rshd and ftpd.
|
||||||
|
|
||||||
diff -up krb5/src/appl/bsd/login.c krb5/src/appl/bsd/login.c
|
diff -up krb5-appl-1.0/bsd/login.c.login_chdir krb5-appl-1.0/bsd/login.c
|
||||||
--- krb5/src/appl/bsd/login.c 2007-07-11 13:50:34.000000000 -0400
|
--- krb5-appl-1.0/bsd/login.c.login_chdir 2010-03-05 11:01:23.000000000 -0500
|
||||||
+++ krb5/src/appl/bsd/login.c 2007-07-11 13:50:36.000000000 -0400
|
+++ krb5-appl-1.0/bsd/login.c 2010-03-05 11:01:23.000000000 -0500
|
||||||
@@ -1497,13 +1497,8 @@ int main(argc, argv)
|
@@ -1115,13 +1115,8 @@ int main(argc, argv)
|
||||||
}
|
}
|
||||||
#endif /* USE_PAM */
|
#endif /* USE_PAM */
|
||||||
|
|
||||||
@ -20,8 +20,8 @@ diff -up krb5/src/appl/bsd/login.c krb5/src/appl/bsd/login.c
|
|||||||
+ exit(0);
|
+ exit(0);
|
||||||
|
|
||||||
/* nothing else left to fail -- really log in */
|
/* nothing else left to fail -- really log in */
|
||||||
{
|
login_time = time(NULL);
|
||||||
@@ -1710,6 +1705,14 @@ int main(argc, argv)
|
@@ -1293,6 +1288,14 @@ int main(argc, argv)
|
||||||
sleepexit(1);
|
sleepexit(1);
|
||||||
}
|
}
|
||||||
|
|
107
krb5-appl-1.0-manpaths.patch
Normal file
107
krb5-appl-1.0-manpaths.patch
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
Change the absolute paths included in the man pages so that the correct
|
||||||
|
values can be dropped in by config.status. After applying this patch,
|
||||||
|
these files should be renamed to their ".in" counterparts, and then the
|
||||||
|
configure scripts should be rebuilt. Originally RT#6525
|
||||||
|
|
||||||
|
diff -up krb5-appl-1.0/aclocal.m4.manpaths krb5-appl-1.0/aclocal.m4
|
||||||
|
--- krb5-appl-1.0/aclocal.m4.manpaths 2010-03-05 10:55:58.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/aclocal.m4 2010-03-05 10:55:58.000000000 -0500
|
||||||
|
@@ -565,3 +565,24 @@ AC_SUBST(PAM_LIBS)
|
||||||
|
AC_SUBST(PAM_MAN)
|
||||||
|
AC_SUBST(NON_PAM_MAN)
|
||||||
|
])dnl
|
||||||
|
+AC_DEFUN(V5_AC_OUTPUT_MANPAGE,[
|
||||||
|
+mansysconfdir=$sysconfdir
|
||||||
|
+mansysconfdir=`eval echo $mansysconfdir | sed -e "s,NONE,$prefix,g"`
|
||||||
|
+mansysconfdir=`eval echo $mansysconfdir | sed -e "s,NONE,$ac_default_prefix,g"`
|
||||||
|
+mansbindir=$sbindir
|
||||||
|
+mansbindir=`eval echo $mansbindir | sed -e "s,NONE,$exec_prefix,g"`
|
||||||
|
+mansbindir=`eval echo $mansbindir | sed -e "s,NONE,$prefix,g"`
|
||||||
|
+mansbindir=`eval echo $mansbindir | sed -e "s,NONE,$ac_default_prefix,g"`
|
||||||
|
+manlocalstatedir=$localstatedir
|
||||||
|
+manlocalstatedir=`eval echo $manlocalstatedir | sed -e "s,NONE,$prefix,g"`
|
||||||
|
+manlocalstatedir=`eval echo $manlocalstatedir | sed -e "s,NONE,$ac_default_prefix,g"`
|
||||||
|
+manlibexecdir=$libexecdir
|
||||||
|
+manlibexecdir=`eval echo $manlibexecdir | sed -e "s,NONE,$exec_prefix,g"`
|
||||||
|
+manlibexecdir=`eval echo $manlibexecdir | sed -e "s,NONE,$prefix,g"`
|
||||||
|
+manlibexecdir=`eval echo $manlibexecdir | sed -e "s,NONE,$ac_default_prefix,g"`
|
||||||
|
+AC_SUBST(mansysconfdir)
|
||||||
|
+AC_SUBST(mansbindir)
|
||||||
|
+AC_SUBST(manlocalstatedir)
|
||||||
|
+AC_SUBST(manlibexecdir)
|
||||||
|
+AC_CONFIG_FILES($1)
|
||||||
|
+])
|
||||||
|
diff -up krb5-appl-1.0/bsd/klogind.M.manpaths krb5-appl-1.0/bsd/klogind.M
|
||||||
|
--- krb5-appl-1.0/bsd/klogind.M.manpaths 2008-12-15 15:29:01.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/bsd/klogind.M 2010-03-05 10:55:58.000000000 -0500
|
||||||
|
@@ -27,7 +27,7 @@ server is invoked by \fIinetd(8)\fP when
|
||||||
|
the port indicated in /etc/inetd.conf. A typical /etc/inetd.conf
|
||||||
|
configuration line for \fIklogind\fP might be:
|
||||||
|
|
||||||
|
-klogin stream tcp nowait root /usr/cygnus/sbin/klogind klogind -e5c
|
||||||
|
+klogin stream tcp nowait root @mansbindir@/klogind klogind -e5c
|
||||||
|
|
||||||
|
When a service request is received, the following protocol is initiated:
|
||||||
|
|
||||||
|
diff -up krb5-appl-1.0/bsd/kshd.M.manpaths krb5-appl-1.0/bsd/kshd.M
|
||||||
|
--- krb5-appl-1.0/bsd/kshd.M.manpaths 2006-06-12 14:19:26.000000000 -0400
|
||||||
|
+++ krb5-appl-1.0/bsd/kshd.M 2010-03-05 10:55:58.000000000 -0500
|
||||||
|
@@ -8,7 +8,7 @@
|
||||||
|
.SH NAME
|
||||||
|
kshd \- kerberized remote shell server
|
||||||
|
.SH SYNOPSIS
|
||||||
|
-.B /usr/local/sbin/kshd
|
||||||
|
+.B @mansbindir@/kshd
|
||||||
|
[
|
||||||
|
.B \-kr45ec
|
||||||
|
]
|
||||||
|
@@ -30,7 +30,7 @@ server is invoked by \fIinetd(8c)\fP whe
|
||||||
|
on the port indicated in /etc/inetd.conf. A typical /etc/inetd.conf
|
||||||
|
configuration line for \fIkrshd\fP might be:
|
||||||
|
|
||||||
|
-kshell stream tcp nowait root /usr/local/sbin/kshd kshd -5c
|
||||||
|
+kshell stream tcp nowait root @mansbindir@/kshd kshd -5c
|
||||||
|
|
||||||
|
When a service request is received, the following protocol is initiated:
|
||||||
|
|
||||||
|
diff -up krb5-appl-1.0/configure.ac.manpaths krb5-appl-1.0/configure.ac
|
||||||
|
--- krb5-appl-1.0/configure.ac.manpaths 2010-03-05 10:55:58.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/configure.ac 2010-03-05 10:55:58.000000000 -0500
|
||||||
|
@@ -412,6 +412,13 @@ else
|
||||||
|
fi
|
||||||
|
AC_SUBST(HAVE_RUNTEST)
|
||||||
|
|
||||||
|
+V5_AC_OUTPUT_MANPAGE([
|
||||||
|
+ gssftp/ftpd/ftpd.M
|
||||||
|
+ bsd/klogind.M
|
||||||
|
+ bsd/kshd.M
|
||||||
|
+ telnet/telnetd/telnetd.8
|
||||||
|
+])
|
||||||
|
+
|
||||||
|
V5_AC_OUTPUT_MAKEFILE(. bsd libmissing libpty
|
||||||
|
gssftp gssftp/ftp gssftp/ftpd
|
||||||
|
telnet telnet/libtelnet telnet/telnet telnet/telnetd
|
||||||
|
diff -up krb5-appl-1.0/gssftp/ftpd/ftpd.M.manpaths krb5-appl-1.0/gssftp/ftpd/ftpd.M
|
||||||
|
--- krb5-appl-1.0/gssftp/ftpd/ftpd.M.manpaths 2009-01-28 00:42:11.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/gssftp/ftpd/ftpd.M 2010-03-05 10:55:58.000000000 -0500
|
||||||
|
@@ -35,7 +35,7 @@
|
||||||
|
.SH NAME
|
||||||
|
ftpd \- DARPA Internet File Transfer Protocol server
|
||||||
|
.SH SYNOPSIS
|
||||||
|
-.B ftpd
|
||||||
|
+.B @mansbindir@/ftpd
|
||||||
|
[\fB\-A \fP|\fB -a\fP] [\fB\-C\fP] [\fB\-c\fP] [\fB\-d\fP] [\fB-E\fP]
|
||||||
|
[\fB\-l\fP] [\fB\-v\fP] [\fB\-T\fP \fImaxtimeout\fP] [\fB\-t\fP \fItimeout\fP]
|
||||||
|
[\fB\-p\fP \fIport\fP] [\fB\-U\fP \fIftpusers-file\fP] [\fB\-u\fP \fIumask\fP]
|
||||||
|
diff -up krb5-appl-1.0/telnet/telnetd/telnetd.8.manpaths krb5-appl-1.0/telnet/telnetd/telnetd.8
|
||||||
|
--- krb5-appl-1.0/telnet/telnetd/telnetd.8.manpaths 2004-11-15 16:25:41.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/telnet/telnetd/telnetd.8 2010-03-05 10:55:58.000000000 -0500
|
||||||
|
@@ -37,7 +37,7 @@ telnetd \-
|
||||||
|
.SM DARPA TELNET
|
||||||
|
protocol server
|
||||||
|
.SH SYNOPSIS
|
||||||
|
-.B /usr/libexec/telnetd
|
||||||
|
+.B @mansbindir@/telnetd
|
||||||
|
[\fB\-a\fP \fIauthmode\fP] [\fB\-B\fP] [\fB\-D\fP] [\fIdebugmode\fP]
|
||||||
|
[\fB\-e\fP] [\fB\-h\fP] [\fB\-I\fP\fIinitid\fP] [\fB\-l\fP]
|
||||||
|
[\fB\-k\fP] [\fB\-n\fP] [\fB\-r\fP\fIlowpty-highpty\fP] [\fB\-s\fP]
|
@ -17,7 +17,7 @@ At run-time, krshd's behavior can be reset to the earlier, non-PAM
|
|||||||
behavior by setting "use_pam" to false in the [ftpd] section of
|
behavior by setting "use_pam" to false in the [ftpd] section of
|
||||||
/etc/krb5.conf.
|
/etc/krb5.conf.
|
||||||
|
|
||||||
Modify login so that instead of directly obtaining v5 or v4 credentials
|
Modify login so that instead of directly obtaining v5 credentials
|
||||||
or running aklog, it calls PAM for authentication if strong
|
or running aklog, it calls PAM for authentication if strong
|
||||||
authentication hasn't already been performed, so that it performs
|
authentication hasn't already been performed, so that it performs
|
||||||
account management using PAM (prompting for a password change if need
|
account management using PAM (prompting for a password change if need
|
||||||
@ -28,24 +28,16 @@ is pretty much always going to be there. At run-time, login's behavior
|
|||||||
can be reset to the earlier, non-PAM behavior by setting "use_pam" to
|
can be reset to the earlier, non-PAM behavior by setting "use_pam" to
|
||||||
false in the [login] section of /etc/krb5.conf.
|
false in the [login] section of /etc/krb5.conf.
|
||||||
|
|
||||||
Modify ksu so that it performs account and session management for the
|
When enabled, ftpd, krshd, and login.krb5 gain dependence on libpam.
|
||||||
target user account, mimicking the action of regular su. The default
|
Originally filed as RT#5939.
|
||||||
service name is "ksu", because on Fedora at least the configuration used
|
|
||||||
is determined by whether or not a login shell is being opened, and so
|
|
||||||
this may need to vary, too. At run-time, ksu's behavior can be reset to
|
|
||||||
the earlier, non-PAM behavior by setting "use_pam" to false in the [ksu]
|
|
||||||
section of /etc/krb5.conf.
|
|
||||||
|
|
||||||
When enabled, ftpd, krshd, login.krb5, and ksu gain dependence on libpam.
|
diff -up krb5-appl-1.0/aclocal.m4.pam krb5-appl-1.0/aclocal.m4
|
||||||
RT#5939.
|
--- krb5-appl-1.0/aclocal.m4.pam 2009-11-21 15:29:19.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/aclocal.m4 2010-03-05 10:48:50.000000000 -0500
|
||||||
diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
@@ -486,3 +486,82 @@ AC_DEFUN([KRB5_AC_LIBUTIL],
|
||||||
--- krb5-1.7/src/aclocal.m4 2009-02-18 19:38:17.000000000 -0500
|
UTIL_LIB=-lutil])dnl
|
||||||
+++ krb5-1.7/src/aclocal.m4 2009-06-04 13:45:57.000000000 -0400
|
AC_SUBST(UTIL_LIB)
|
||||||
@@ -1771,3 +1771,86 @@ AC_DEFUN(KRB5_AC_KEYRING_CCACHE,[
|
|
||||||
]))
|
|
||||||
])dnl
|
])dnl
|
||||||
dnl
|
|
||||||
+dnl
|
+dnl
|
||||||
+dnl Use PAM instead of local crypt() compare for checking local passwords,
|
+dnl Use PAM instead of local crypt() compare for checking local passwords,
|
||||||
+dnl and perform PAM account, session management, and password-changing where
|
+dnl and perform PAM account, session management, and password-changing where
|
||||||
@ -62,8 +54,6 @@ diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
|||||||
+ withekshellpamservice="$withval",withekshellpamservice=ekshell)
|
+ withekshellpamservice="$withval",withekshellpamservice=ekshell)
|
||||||
+AC_ARG_WITH(pam-ftp-service,[AC_HELP_STRING(--with-ftp-service,[PAM service name for ftpd ["gssftp"]])],
|
+AC_ARG_WITH(pam-ftp-service,[AC_HELP_STRING(--with-ftp-service,[PAM service name for ftpd ["gssftp"]])],
|
||||||
+ withftppamservice="$withval",withftppamservice=gssftp)
|
+ withftppamservice="$withval",withftppamservice=gssftp)
|
||||||
+AC_ARG_WITH(pam-ksu-service,[AC_HELP_STRING(--with-ksu-service,[PAM service name for ksu ["ksu"]])],
|
|
||||||
+ withksupamservice="$withval",withksupamservice=ksu)
|
|
||||||
+old_LIBS="$LIBS"
|
+old_LIBS="$LIBS"
|
||||||
+if test "$withpam" != no ; then
|
+if test "$withpam" != no ; then
|
||||||
+ AC_MSG_RESULT([checking for PAM...])
|
+ AC_MSG_RESULT([checking for PAM...])
|
||||||
@ -114,8 +104,6 @@ diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
|||||||
+ [Define to the name of the PAM service name to be used by rshd for encrypted sessions.])
|
+ [Define to the name of the PAM service name to be used by rshd for encrypted sessions.])
|
||||||
+ AC_DEFINE_UNQUOTED(FTP_PAM_SERVICE,"$withftppamservice",
|
+ AC_DEFINE_UNQUOTED(FTP_PAM_SERVICE,"$withftppamservice",
|
||||||
+ [Define to the name of the PAM service name to be used by ftpd.])
|
+ [Define to the name of the PAM service name to be used by ftpd.])
|
||||||
+ AC_DEFINE_UNQUOTED(KSU_PAM_SERVICE,"$withksupamservice",
|
|
||||||
+ [Define to the name of the PAM service name to be used by ksu.])
|
|
||||||
+ PAM_LIBS="$LIBS"
|
+ PAM_LIBS="$LIBS"
|
||||||
+ NON_PAM_MAN=".\\\" "
|
+ NON_PAM_MAN=".\\\" "
|
||||||
+ PAM_MAN=
|
+ PAM_MAN=
|
||||||
@ -129,21 +117,10 @@ diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
|||||||
+AC_SUBST(PAM_MAN)
|
+AC_SUBST(PAM_MAN)
|
||||||
+AC_SUBST(NON_PAM_MAN)
|
+AC_SUBST(NON_PAM_MAN)
|
||||||
+])dnl
|
+])dnl
|
||||||
diff -up krb5-1.7/src/appl/bsd/configure.in krb5-1.7/src/appl/bsd/configure.in
|
diff -up krb5-appl-1.0/bsd/krshd.c.pam krb5-appl-1.0/bsd/krshd.c
|
||||||
--- krb5-1.7/src/appl/bsd/configure.in 2008-12-15 15:29:01.000000000 -0500
|
--- krb5-appl-1.0/bsd/krshd.c.pam 2009-11-16 05:27:04.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/bsd/configure.in 2009-06-04 13:45:57.000000000 -0400
|
+++ krb5-appl-1.0/bsd/krshd.c 2010-03-05 10:48:50.000000000 -0500
|
||||||
@@ -24,6 +24,7 @@ AC_CHECK_LIB(odm,main,
|
@@ -163,6 +163,10 @@ char copyright[] =
|
||||||
AC_CHECK_LIB(cfg,main,
|
|
||||||
LOGINLIBS="$LOGINLIBS -lodm -ls -lcfg"
|
|
||||||
)))
|
|
||||||
+KRB5_WITH_PAM
|
|
||||||
dnl
|
|
||||||
dnl Make our operating system-specific security checks and definitions for
|
|
||||||
dnl login.
|
|
||||||
diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|
||||||
--- krb5-1.7/src/appl/bsd/krshd.c 2009-04-15 16:07:15.000000000 -0400
|
|
||||||
+++ krb5-1.7/src/appl/bsd/krshd.c 2009-06-04 13:45:57.000000000 -0400
|
|
||||||
@@ -161,6 +161,10 @@ char copyright[] =
|
|
||||||
#include <arpa/nameser.h>
|
#include <arpa/nameser.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -154,7 +131,7 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|||||||
#ifndef MAXDNAME
|
#ifndef MAXDNAME
|
||||||
#define MAXDNAME 256 /*per the rfc*/
|
#define MAXDNAME 256 /*per the rfc*/
|
||||||
#endif
|
#endif
|
||||||
@@ -181,6 +185,7 @@ void fatal(int, const char *);
|
@@ -183,6 +187,7 @@ void fatal(int, const char *);
|
||||||
|
|
||||||
int require_encrypt = 0;
|
int require_encrypt = 0;
|
||||||
int do_encrypt = 0;
|
int do_encrypt = 0;
|
||||||
@ -162,7 +139,7 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|||||||
int anyport = 0;
|
int anyport = 0;
|
||||||
char *kprogdir = KPROGDIR;
|
char *kprogdir = KPROGDIR;
|
||||||
int netf;
|
int netf;
|
||||||
@@ -1030,14 +1035,6 @@ void doit(f, fromp)
|
@@ -1032,14 +1037,6 @@ void doit(f, fromp)
|
||||||
}
|
}
|
||||||
#endif /*CRAY*/
|
#endif /*CRAY*/
|
||||||
|
|
||||||
@ -177,7 +154,7 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|||||||
#ifdef KERBEROS
|
#ifdef KERBEROS
|
||||||
/* krb5_kuserok returns 1 if OK */
|
/* krb5_kuserok returns 1 if OK */
|
||||||
if (!krb5_kuserok(bsd_context, client, locuser)){
|
if (!krb5_kuserok(bsd_context, client, locuser)){
|
||||||
@@ -1067,11 +1064,51 @@ void doit(f, fromp)
|
@@ -1069,11 +1066,51 @@ void doit(f, fromp)
|
||||||
goto signout_please;
|
goto signout_please;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,7 +206,7 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|||||||
/* Log access to account */
|
/* Log access to account */
|
||||||
pwd = (struct passwd *) getpwnam(locuser);
|
pwd = (struct passwd *) getpwnam(locuser);
|
||||||
if (pwd && (pwd->pw_uid == 0)) {
|
if (pwd && (pwd->pw_uid == 0)) {
|
||||||
@@ -1111,7 +1148,7 @@ void doit(f, fromp)
|
@@ -1113,7 +1150,7 @@ void doit(f, fromp)
|
||||||
|
|
||||||
(void) write(2, "", 1);
|
(void) write(2, "", 1);
|
||||||
|
|
||||||
@ -238,7 +215,7 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|||||||
if (port&&(pipe(pv) < 0)) {
|
if (port&&(pipe(pv) < 0)) {
|
||||||
error("Can't make pipe.\n");
|
error("Can't make pipe.\n");
|
||||||
goto signout_please;
|
goto signout_please;
|
||||||
@@ -1416,6 +1453,15 @@ void doit(f, fromp)
|
@@ -1418,6 +1455,15 @@ void doit(f, fromp)
|
||||||
|
|
||||||
environ = envinit;
|
environ = envinit;
|
||||||
|
|
||||||
@ -254,11 +231,11 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
|||||||
#ifdef KERBEROS
|
#ifdef KERBEROS
|
||||||
/* To make Kerberos rcp work correctly, we must ensure that we
|
/* To make Kerberos rcp work correctly, we must ensure that we
|
||||||
invoke Kerberos rcp on this end, not normal rcp, even if the
|
invoke Kerberos rcp on this end, not normal rcp, even if the
|
||||||
diff -up krb5-1.7/src/appl/bsd/login.c krb5-1.7/src/appl/bsd/login.c
|
diff -up krb5-appl-1.0/bsd/login.c.pam krb5-appl-1.0/bsd/login.c
|
||||||
--- krb5-1.7/src/appl/bsd/login.c 2008-12-15 15:29:01.000000000 -0500
|
--- krb5-appl-1.0/bsd/login.c.pam 2009-11-21 15:29:19.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/bsd/login.c 2009-06-04 13:45:57.000000000 -0400
|
+++ krb5-appl-1.0/bsd/login.c 2010-03-05 10:48:50.000000000 -0500
|
||||||
@@ -145,6 +145,11 @@ typedef sigtype (*handler)();
|
@@ -148,6 +148,11 @@ typedef sigtype (*handler)();
|
||||||
#include "osconf.h"
|
#define KRB5_ENV_CCNAME "KRB5CCNAME"
|
||||||
#endif /* KRB5_GET_TICKETS */
|
#endif /* KRB5_GET_TICKETS */
|
||||||
|
|
||||||
+#ifdef USE_PAM
|
+#ifdef USE_PAM
|
||||||
@ -269,7 +246,7 @@ diff -up krb5-1.7/src/appl/bsd/login.c krb5-1.7/src/appl/bsd/login.c
|
|||||||
#ifndef __STDC__
|
#ifndef __STDC__
|
||||||
#ifndef volatile
|
#ifndef volatile
|
||||||
#define volatile
|
#define volatile
|
||||||
@@ -294,6 +299,9 @@ static struct login_confs {
|
@@ -293,6 +298,9 @@ static struct login_confs {
|
||||||
char *flagname;
|
char *flagname;
|
||||||
int *flag;
|
int *flag;
|
||||||
} login_conf_set[] = {
|
} login_conf_set[] = {
|
||||||
@ -279,7 +256,7 @@ diff -up krb5-1.7/src/appl/bsd/login.c krb5-1.7/src/appl/bsd/login.c
|
|||||||
#ifdef KRB5_GET_TICKETS
|
#ifdef KRB5_GET_TICKETS
|
||||||
{"krb5_get_tickets", &login_krb5_get_tickets},
|
{"krb5_get_tickets", &login_krb5_get_tickets},
|
||||||
{"krb_run_aklog", &login_krb_run_aklog},
|
{"krb_run_aklog", &login_krb_run_aklog},
|
||||||
@@ -933,6 +941,21 @@ int main(argc, argv)
|
@@ -934,6 +942,21 @@ int main(argc, argv)
|
||||||
if (!unix_needs_passwd())
|
if (!unix_needs_passwd())
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -301,7 +278,7 @@ diff -up krb5-1.7/src/appl/bsd/login.c krb5-1.7/src/appl/bsd/login.c
|
|||||||
#ifdef KRB5_GET_TICKETS
|
#ifdef KRB5_GET_TICKETS
|
||||||
if (login_krb5_get_tickets) {
|
if (login_krb5_get_tickets) {
|
||||||
/* rename these to something more verbose */
|
/* rename these to something more verbose */
|
||||||
@@ -1020,6 +1043,24 @@ int main(argc, argv)
|
@@ -1021,6 +1044,24 @@ int main(argc, argv)
|
||||||
/* committed to login -- turn off timeout */
|
/* committed to login -- turn off timeout */
|
||||||
(void) alarm((u_int) 0);
|
(void) alarm((u_int) 0);
|
||||||
|
|
||||||
@ -326,7 +303,7 @@ diff -up krb5-1.7/src/appl/bsd/login.c krb5-1.7/src/appl/bsd/login.c
|
|||||||
/*
|
/*
|
||||||
* If valid so far and root is logging in, see if root logins on
|
* If valid so far and root is logging in, see if root logins on
|
||||||
* this terminal are permitted.
|
* this terminal are permitted.
|
||||||
@@ -1060,6 +1101,21 @@ int main(argc, argv)
|
@@ -1061,6 +1102,21 @@ int main(argc, argv)
|
||||||
sleepexit(0);
|
sleepexit(0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -348,7 +325,7 @@ diff -up krb5-1.7/src/appl/bsd/login.c krb5-1.7/src/appl/bsd/login.c
|
|||||||
|
|
||||||
if (chdir(pwd->pw_dir) < 0) {
|
if (chdir(pwd->pw_dir) < 0) {
|
||||||
printf("No directory %s!\n", pwd->pw_dir);
|
printf("No directory %s!\n", pwd->pw_dir);
|
||||||
@@ -1347,6 +1403,11 @@ int main(argc, argv)
|
@@ -1343,6 +1399,11 @@ int main(argc, argv)
|
||||||
}
|
}
|
||||||
#endif /* KRB5_GET_TICKETS */
|
#endif /* KRB5_GET_TICKETS */
|
||||||
|
|
||||||
@ -360,54 +337,55 @@ diff -up krb5-1.7/src/appl/bsd/login.c krb5-1.7/src/appl/bsd/login.c
|
|||||||
if (tty[sizeof("tty")-1] == 'd')
|
if (tty[sizeof("tty")-1] == 'd')
|
||||||
syslog(LOG_INFO, "DIALUP %s, %s", tty, pwd->pw_name);
|
syslog(LOG_INFO, "DIALUP %s, %s", tty, pwd->pw_name);
|
||||||
if (pwd->pw_uid == 0)
|
if (pwd->pw_uid == 0)
|
||||||
diff -up krb5-1.7/src/appl/bsd/Makefile.in krb5-1.7/src/appl/bsd/Makefile.in
|
diff -up krb5-appl-1.0/bsd/Makefile.in.pam krb5-appl-1.0/bsd/Makefile.in
|
||||||
--- krb5-1.7/src/appl/bsd/Makefile.in 2009-01-05 15:27:53.000000000 -0500
|
--- krb5-appl-1.0/bsd/Makefile.in.pam 2009-11-05 15:10:37.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/bsd/Makefile.in 2009-06-04 13:45:57.000000000 -0400
|
+++ krb5-appl-1.0/bsd/Makefile.in 2010-03-05 10:48:50.000000000 -0500
|
||||||
@@ -11,12 +11,13 @@ SETENVOBJ=@SETENVOBJ@
|
@@ -3,11 +3,14 @@ BUILDTOP=$(REL)..
|
||||||
|
|
||||||
LOGINLIBS=@LOGINLIBS@
|
LOGINLIBS=@LOGINLIBS@
|
||||||
LIBOBJS=@LIBOBJS@
|
|
||||||
KRSHDLIBS=@KRSHDLIBS@
|
KRSHDLIBS=@KRSHDLIBS@
|
||||||
+PAMOBJS=pam.o
|
+PAMOBJS=pam.o
|
||||||
|
+PAM_LIBS=@PAM_LIBS@
|
||||||
|
|
||||||
SRCS= $(srcdir)/krcp.c $(srcdir)/krlogin.c $(srcdir)/krsh.c $(srcdir)/kcmd.c \
|
SRCS= $(srcdir)/krcp.c $(srcdir)/krlogin.c $(srcdir)/krsh.c $(srcdir)/kcmd.c \
|
||||||
$(srcdir)/forward.c $(srcdir)/login.c $(srcdir)/krshd.c \
|
$(srcdir)/forward.c $(srcdir)/login.c $(srcdir)/krshd.c \
|
||||||
$(srcdir)/krlogind.c
|
$(srcdir)/krlogind.c
|
||||||
OBJS= krcp.o krlogin.o krsh.o kcmd.o forward.o $(SETENVOBJ) login.o krshd.o \
|
-OBJS= krcp.o krlogin.o krsh.o kcmd.o forward.o login.o krshd.o krlogind.o
|
||||||
- krlogind.o $(LIBOBJS)
|
+OBJS= krcp.o krlogin.o krsh.o kcmd.o forward.o login.o krshd.o krlogind.o \
|
||||||
+ krlogind.o $(LIBOBJS) $(PAMOBJS)
|
+ $(PAMOBJS)
|
||||||
|
|
||||||
UCB_RLOGIN = @UCB_RLOGIN@
|
UCB_RLOGIN = @UCB_RLOGIN@
|
||||||
UCB_RSH = @UCB_RSH@
|
UCB_RSH = @UCB_RSH@
|
||||||
@@ -53,8 +54,8 @@ install::
|
@@ -50,8 +53,8 @@ install::
|
||||||
) || exit 1; \
|
) || exit 1; \
|
||||||
done
|
done
|
||||||
|
|
||||||
-kshd: krshd.o kcmd.o forward.o $(SETENVOBJ) $(LIBOBJS) $(PTY_DEPLIB) $(KRB5_BASE_DEPLIBS) $(APPUTILS_DEPLIB)
|
-kshd: krshd.o kcmd.o forward.o $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||||
- $(CC_LINK) -o kshd krshd.o kcmd.o forward.o $(SETENVOBJ) $(LIBOBJS) $(KRSHDLIBS) $(PTY_LIB) $(UTIL_LIB) $(KRB5_BASE_LIBS) $(APPUTILS_LIB)
|
- $(CC_LINK) -o kshd krshd.o kcmd.o forward.o $(KRSHDLIBS) $(PTY_LIB) $(UTIL_LIB) $(MISSING_LIB) $(KRB5_BASE_LIBS) $(LIBS)
|
||||||
+kshd: krshd.o kcmd.o forward.o $(PAMOBJS) $(SETENVOBJ) $(LIBOBJS) $(PTY_DEPLIB) $(KRB5_BASE_DEPLIBS) $(APPUTILS_DEPLIB)
|
+kshd: krshd.o kcmd.o forward.o $(PAMOBJS) $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||||
+ $(CC_LINK) -o kshd krshd.o kcmd.o forward.o $(PAMOBJS) $(SETENVOBJ) $(LIBOBJS) $(KRSHDLIBS) $(PTY_LIB) $(UTIL_LIB) $(KRB5_BASE_LIBS) $(PAM_LIBS) $(APPUTILS_LIB)
|
+ $(CC_LINK) -o kshd krshd.o kcmd.o forward.o $(PAMOBJS) $(KRSHDLIBS) $(PTY_LIB) $(UTIL_LIB) $(MISSING_LIB) $(KRB5_BASE_LIBS) $(PAM_LIBS) $(LIBS)
|
||||||
|
|
||||||
klogind: krlogind.o kcmd.o forward.o $(SETENVOBJ) $(LIBOBJS) $(PTY_DEPLIB) $(KRB5_BASE_DEPLIBS) $(APPUTILS_DEPLIB)
|
klogind: krlogind.o kcmd.o forward.o $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||||
$(CC_LINK) -o klogind krlogind.o kcmd.o forward.o $(SETENVOBJ) $(LIBOBJS) $(PTY_LIB) $(UTIL_LIB) $(KRB5_BASE_LIBS) $(APPUTILS_LIB)
|
$(CC_LINK) -o klogind krlogind.o kcmd.o forward.o $(PTY_LIB) $(UTIL_LIB) $(MISSING_LIB) $(KRB5_BASE_LIBS) $(LIBS)
|
||||||
@@ -71,8 +72,8 @@ install::
|
@@ -68,8 +71,8 @@ install::
|
||||||
# No program name transformation is done with login.krb5 since it is directly
|
# No program name transformation is done with login.krb5 since it is directly
|
||||||
# referenced by klogind.
|
# referenced by klogind.
|
||||||
#
|
#
|
||||||
-login.krb5: login.o $(SETENVOBJ) $(LIBOBJS) $(PTY_DEPLIB) $(KRB5_BASE_DEPLIBS)
|
-login.krb5: login.o $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||||
- $(CC_LINK) -o login.krb5 login.o $(SETENVOBJ) $(LIBOBJS) $(LOGINLIBS) $(PTY_LIB) $(KRB5_BASE_LIBS)
|
- $(CC_LINK) -o login.krb5 login.o $(LOGINLIBS) $(PTY_LIB) $(KRB5_BASE_LIBS) $(MISSING_LIB) $(LIBS)
|
||||||
+login.krb5: login.o $(SETENVOBJ) $(PAMOBJS) $(LIBOBJS) $(PTY_DEPLIB) $(KRB5_BASE_DEPLIBS)
|
+login.krb5: login.o $(PAMOBJS) $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||||
+ $(CC_LINK) -o login.krb5 login.o $(SETENVOBJ) $(PAMOBJS) $(LIBOBJS) $(LOGINLIBS) $(PTY_LIB) $(KRB5_BASE_LIBS) $(PAM_LIBS)
|
+ $(CC_LINK) -o login.krb5 login.o $(PAMOBJS) $(LOGINLIBS) $(PTY_LIB) $(KRB5_BASE_LIBS) $(MISSING_LIB) $(PAM_LIBS) $(LIBS)
|
||||||
|
|
||||||
install::
|
install::
|
||||||
$(INSTALL_PROGRAM) login.krb5 $(DESTDIR)$(SERVER_BINDIR)/login.krb5
|
$(INSTALL_PROGRAM) login.krb5 $(DESTDIR)$(SERVER_BINDIR)/login.krb5
|
||||||
diff -up /dev/null krb5-1.7/src/appl/bsd/pam.c
|
diff -up krb5-appl-1.0/bsd/pam.c.pam krb5-appl-1.0/bsd/pam.c
|
||||||
--- /dev/null 2009-06-04 10:34:55.169007373 -0400
|
--- krb5-appl-1.0/bsd/pam.c.pam 2010-03-05 10:48:50.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/bsd/pam.c 2009-06-04 13:45:57.000000000 -0400
|
+++ krb5-appl-1.0/bsd/pam.c 2010-03-05 10:48:50.000000000 -0500
|
||||||
@@ -0,0 +1,433 @@
|
@@ -0,0 +1,438 @@
|
||||||
+/*
|
+/*
|
||||||
+ * src/appl/bsd/pam.c
|
+ * src/appl/bsd/pam.c
|
||||||
+ *
|
+ *
|
||||||
+ * Copyright 2007,2009 Red Hat, Inc.
|
+ * Copyright 2007,2009,2010 Red Hat, Inc.
|
||||||
+ *
|
+ *
|
||||||
+ * All Rights Reserved.
|
+ * All Rights Reserved.
|
||||||
+ *
|
+ *
|
||||||
@ -447,13 +425,17 @@ diff -up /dev/null krb5-1.7/src/appl/bsd/pam.c
|
|||||||
+#include <stdlib.h>
|
+#include <stdlib.h>
|
||||||
+#include <string.h>
|
+#include <string.h>
|
||||||
+#include <unistd.h>
|
+#include <unistd.h>
|
||||||
+#include "k5-int.h"
|
+#include <profile.h>
|
||||||
+#include "pam.h"
|
+#include "pam.h"
|
||||||
+
|
+
|
||||||
+#ifndef MAXPWSIZE
|
+#ifndef MAXPWSIZE
|
||||||
+#define MAXPWSIZE 128
|
+#define MAXPWSIZE 128
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
|
+#ifndef KRB5_ENV_CCNAME
|
||||||
|
+#define KRB5_ENV_CCNAME "KRB5CCNAME"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
+static int appl_pam_started;
|
+static int appl_pam_started;
|
||||||
+static pid_t appl_pam_starter = -1;
|
+static pid_t appl_pam_starter = -1;
|
||||||
+static int appl_pam_session_opened;
|
+static int appl_pam_session_opened;
|
||||||
@ -471,8 +453,9 @@ diff -up /dev/null krb5-1.7/src/appl/bsd/pam.c
|
|||||||
+appl_pam_enabled(krb5_context context, const char *section)
|
+appl_pam_enabled(krb5_context context, const char *section)
|
||||||
+{
|
+{
|
||||||
+ int enabled = 1;
|
+ int enabled = 1;
|
||||||
+ if ((context != NULL) && (context->profile != NULL)) {
|
+ profile_t profile = NULL;
|
||||||
+ if (profile_get_boolean(context->profile,
|
+ if ((context != NULL) && (krb5_get_profile(context, &profile) == 0)) {
|
||||||
|
+ if (profile_get_boolean(profile,
|
||||||
+ section,
|
+ section,
|
||||||
+ USE_PAM_CONFIGURATION_KEYWORD,
|
+ USE_PAM_CONFIGURATION_KEYWORD,
|
||||||
+ NULL,
|
+ NULL,
|
||||||
@ -837,9 +820,9 @@ diff -up /dev/null krb5-1.7/src/appl/bsd/pam.c
|
|||||||
+ return ret;
|
+ return ret;
|
||||||
+}
|
+}
|
||||||
+#endif
|
+#endif
|
||||||
diff -up /dev/null krb5-1.7/src/appl/bsd/pam.h
|
diff -up krb5-appl-1.0/bsd/pam.h.pam krb5-appl-1.0/bsd/pam.h
|
||||||
--- /dev/null 2009-06-04 10:34:55.169007373 -0400
|
--- krb5-appl-1.0/bsd/pam.h.pam 2010-03-05 10:48:50.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/bsd/pam.h 2009-06-04 13:45:57.000000000 -0400
|
+++ krb5-appl-1.0/bsd/pam.h 2010-03-05 10:48:50.000000000 -0500
|
||||||
@@ -0,0 +1,65 @@
|
@@ -0,0 +1,65 @@
|
||||||
+/*
|
+/*
|
||||||
+ * src/appl/bsd/pam.h
|
+ * src/appl/bsd/pam.h
|
||||||
@ -906,21 +889,22 @@ diff -up /dev/null krb5-1.7/src/appl/bsd/pam.h
|
|||||||
+int appl_pam_cred_init(void);
|
+int appl_pam_cred_init(void);
|
||||||
+void appl_pam_cleanup(void);
|
+void appl_pam_cleanup(void);
|
||||||
+#endif
|
+#endif
|
||||||
diff -up krb5-1.7/src/appl/gssftp/configure.in krb5-1.7/src/appl/gssftp/configure.in
|
diff -up krb5-appl-1.0/configure.ac.pam krb5-appl-1.0/configure.ac
|
||||||
--- krb5-1.7/src/appl/gssftp/configure.in 2006-03-31 16:00:40.000000000 -0500
|
--- krb5-appl-1.0/configure.ac.pam 2009-11-21 16:46:39.000000000 -0500
|
||||||
+++ krb5-1.7/src/appl/gssftp/configure.in 2009-06-04 13:45:57.000000000 -0400
|
+++ krb5-appl-1.0/configure.ac 2010-03-05 10:48:50.000000000 -0500
|
||||||
@@ -17,6 +17,7 @@ DECLARE_SYS_ERRLIST
|
@@ -156,6 +156,8 @@ AC_CHECK_FUNC(tgetent, ,
|
||||||
AC_REPLACE_FUNCS(getdtablesize)
|
[AC_MSG_ERROR([Could not find tgetent; are you missing a curses/ncurses library?])])
|
||||||
AC_CHECK_FUNCS(getcwd getdtablesize getusershell seteuid setreuid setresuid strerror getenv)
|
LIBS="$old_LIBS"
|
||||||
AC_CHECK_LIB(crypt,crypt) dnl
|
|
||||||
+KRB5_WITH_PAM
|
+KRB5_WITH_PAM
|
||||||
KRB5_AC_LIBUTIL
|
+
|
||||||
dnl
|
# Make our operating system-specific security checks and definitions
|
||||||
dnl copied from appl/bsd/configure.in
|
# for libpty, login, and ftpd. The following code decides what
|
||||||
diff -up krb5-1.7/src/appl/gssftp/ftpd/ftpd.c krb5-1.7/src/appl/gssftp/ftpd/ftpd.c
|
# streams modules will be pushed onto a pty. In particular, if
|
||||||
--- krb5-1.7/src/appl/gssftp/ftpd/ftpd.c 2009-01-28 00:42:11.000000000 -0500
|
diff -up krb5-appl-1.0/gssftp/ftpd/ftpd.c.pam krb5-appl-1.0/gssftp/ftpd/ftpd.c
|
||||||
+++ krb5-1.7/src/appl/gssftp/ftpd/ftpd.c 2009-06-04 13:45:57.000000000 -0400
|
--- krb5-appl-1.0/gssftp/ftpd/ftpd.c.pam 2009-11-18 00:07:46.000000000 -0500
|
||||||
@@ -67,6 +67,9 @@ static char sccsid[] = "@(#)ftpd.c 5.40
|
+++ krb5-appl-1.0/gssftp/ftpd/ftpd.c 2010-03-05 10:48:50.000000000 -0500
|
||||||
|
@@ -69,6 +69,9 @@ static char sccsid[] = "@(#)ftpd.c 5.40
|
||||||
#ifdef HAVE_SHADOW
|
#ifdef HAVE_SHADOW
|
||||||
#include <shadow.h>
|
#include <shadow.h>
|
||||||
#endif
|
#endif
|
||||||
@ -930,7 +914,7 @@ diff -up krb5-1.7/src/appl/gssftp/ftpd/ftpd.c krb5-1.7/src/appl/gssftp/ftpd/ftpd
|
|||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#ifndef POSIX_SETJMP
|
#ifndef POSIX_SETJMP
|
||||||
@@ -745,6 +748,22 @@ user(name)
|
@@ -743,6 +746,22 @@ user(name)
|
||||||
name);
|
name);
|
||||||
}
|
}
|
||||||
#endif /* GSSAPI */
|
#endif /* GSSAPI */
|
||||||
@ -953,7 +937,7 @@ diff -up krb5-1.7/src/appl/gssftp/ftpd/ftpd.c krb5-1.7/src/appl/gssftp/ftpd/ftpd
|
|||||||
|
|
||||||
if (!authorized && authlevel == AUTHLEVEL_AUTHORIZE) {
|
if (!authorized && authlevel == AUTHLEVEL_AUTHORIZE) {
|
||||||
strncat(buf, "; Access denied.",
|
strncat(buf, "; Access denied.",
|
||||||
@@ -846,6 +865,10 @@ end_login()
|
@@ -843,6 +862,10 @@ end_login()
|
||||||
(void) krb5_seteuid((uid_t)0);
|
(void) krb5_seteuid((uid_t)0);
|
||||||
if (logged_in)
|
if (logged_in)
|
||||||
pty_logwtmp(ttyline, "", "");
|
pty_logwtmp(ttyline, "", "");
|
||||||
@ -964,7 +948,7 @@ diff -up krb5-1.7/src/appl/gssftp/ftpd/ftpd.c krb5-1.7/src/appl/gssftp/ftpd/ftpd
|
|||||||
if (have_creds) {
|
if (have_creds) {
|
||||||
#ifdef GSSAPI
|
#ifdef GSSAPI
|
||||||
krb5_cc_destroy(kcontext, ccache);
|
krb5_cc_destroy(kcontext, ccache);
|
||||||
@@ -954,9 +977,19 @@ pass(passwd)
|
@@ -951,9 +974,19 @@ pass(passwd)
|
||||||
* kpass fails and the user has no local password
|
* kpass fails and the user has no local password
|
||||||
* kpass fails and the provided password doesn't match pw
|
* kpass fails and the provided password doesn't match pw
|
||||||
*/
|
*/
|
||||||
@ -987,7 +971,7 @@ diff -up krb5-1.7/src/appl/gssftp/ftpd/ftpd.c krb5-1.7/src/appl/gssftp/ftpd/ftpd
|
|||||||
pw = NULL;
|
pw = NULL;
|
||||||
sleep(5);
|
sleep(5);
|
||||||
if (++login_attempts >= 3) {
|
if (++login_attempts >= 3) {
|
||||||
@@ -973,6 +1006,23 @@ pass(passwd)
|
@@ -970,6 +1003,23 @@ pass(passwd)
|
||||||
}
|
}
|
||||||
login_attempts = 0; /* this time successful */
|
login_attempts = 0; /* this time successful */
|
||||||
|
|
||||||
@ -1011,7 +995,7 @@ diff -up krb5-1.7/src/appl/gssftp/ftpd/ftpd.c krb5-1.7/src/appl/gssftp/ftpd/ftpd
|
|||||||
login(passwd, 0);
|
login(passwd, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -988,6 +1038,18 @@ login(passwd, logincode)
|
@@ -985,6 +1035,18 @@ login(passwd, logincode)
|
||||||
chown(ccname, pw->pw_uid, pw->pw_gid);
|
chown(ccname, pw->pw_uid, pw->pw_gid);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1030,7 +1014,7 @@ diff -up krb5-1.7/src/appl/gssftp/ftpd/ftpd.c krb5-1.7/src/appl/gssftp/ftpd/ftpd
|
|||||||
|
|
||||||
(void) krb5_setegid((gid_t)pw->pw_gid);
|
(void) krb5_setegid((gid_t)pw->pw_gid);
|
||||||
(void) initgroups(pw->pw_name, pw->pw_gid);
|
(void) initgroups(pw->pw_name, pw->pw_gid);
|
||||||
@@ -1960,6 +2022,10 @@ dologout(status)
|
@@ -1966,6 +2028,10 @@ dologout(status)
|
||||||
krb5_cc_destroy(kcontext, ccache);
|
krb5_cc_destroy(kcontext, ccache);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1041,12 +1025,12 @@ diff -up krb5-1.7/src/appl/gssftp/ftpd/ftpd.c krb5-1.7/src/appl/gssftp/ftpd/ftpd
|
|||||||
/* beware of flushing buffers after a SIGPIPE */
|
/* beware of flushing buffers after a SIGPIPE */
|
||||||
_exit(status);
|
_exit(status);
|
||||||
}
|
}
|
||||||
diff -up krb5-1.7/src/appl/gssftp/ftpd/Makefile.in krb5-1.7/src/appl/gssftp/ftpd/Makefile.in
|
diff -up krb5-appl-1.0/gssftp/ftpd/Makefile.in.pam krb5-appl-1.0/gssftp/ftpd/Makefile.in
|
||||||
--- krb5-1.7/src/appl/gssftp/ftpd/Makefile.in 2009-01-05 15:27:53.000000000 -0500
|
--- krb5-appl-1.0/gssftp/ftpd/Makefile.in.pam 2009-07-20 13:21:24.000000000 -0400
|
||||||
+++ krb5-1.7/src/appl/gssftp/ftpd/Makefile.in 2009-06-04 13:45:57.000000000 -0400
|
+++ krb5-appl-1.0/gssftp/ftpd/Makefile.in 2010-03-05 10:48:50.000000000 -0500
|
||||||
@@ -14,23 +14,25 @@ SETENVOBJ=@SETENVOBJ@
|
@@ -6,22 +6,24 @@ PROG_LIBPATH=-L$(TOPLIBD)
|
||||||
LIBOBJS=@LIBOBJS@
|
PROG_RPATH=$(KRB5_LIBDIR)
|
||||||
COMERRLIB=$(BUILDTOP)/util/et/libcom_err.a
|
|
||||||
FTPD_LIBS=@FTPD_LIBS@
|
FTPD_LIBS=@FTPD_LIBS@
|
||||||
+PAM_LIBS=@PAM_LIBS@
|
+PAM_LIBS=@PAM_LIBS@
|
||||||
|
|
||||||
@ -1054,218 +1038,29 @@ diff -up krb5-1.7/src/appl/gssftp/ftpd/Makefile.in krb5-1.7/src/appl/gssftp/ftpd
|
|||||||
$(srcdir)/vers.c \
|
$(srcdir)/vers.c \
|
||||||
$(srcdir)/../ftp/glob.c \
|
$(srcdir)/../ftp/glob.c \
|
||||||
$(srcdir)/../ftp/radix.c \
|
$(srcdir)/../ftp/radix.c \
|
||||||
$(srcdir)/../ftp/secure.c \
|
- $(srcdir)/../ftp/secure.c
|
||||||
+ $(srcdir)/../../bsd/pam.c \
|
+ $(srcdir)/../ftp/secure.c \
|
||||||
$(srcdir)/../../bsd/getdtablesize.c $(SETENVSRC)
|
+ $(srcdir)/../../bsd/pam.c
|
||||||
|
|
||||||
OBJS = ftpd.o ftpcmd.o glob.o popen.o vers.o radix.o \
|
OBJS = ftpd.o ftpcmd.o glob.o popen.o vers.o radix.o \
|
||||||
- secure.o $(LIBOBJS) $(SETENVOBJ)
|
- secure.o
|
||||||
+ secure.o pam.o getdtablesize.o $(LIBOBJS) $(SETENVOBJ)
|
+ secure.o pam.o
|
||||||
|
|
||||||
LOCALINCLUDES = -I$(srcdir)/.. -I$(srcdir)
|
LOCALINCLUDES = -I$(srcdir)/.. -I$(srcdir)
|
||||||
|
|
||||||
all:: ftpd
|
all:: ftpd
|
||||||
|
|
||||||
ftpd: $(OBJS) $(PTY_DEPLIB) $(GSS_DEPLIBS) $(KRB5_BASE_DEPLIBS)
|
ftpd: $(OBJS) $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||||
- $(CC_LINK) -o $@ $(OBJS) $(FTPD_LIBS) $(PTY_LIB) $(UTIL_LIB) $(GSS_LIBS) $(KRB5_BASE_LIBS)
|
- $(CC_LINK) -o $@ $(OBJS) $(FTPD_LIBS) $(PTY_LIB) $(UTIL_LIB) $(MISSING_LIB) $(GSS_LIBS) $(LIBS)
|
||||||
+ $(CC_LINK) -o $@ $(OBJS) $(FTPD_LIBS) $(PTY_LIB) $(UTIL_LIB) $(GSS_LIBS) $(KRB5_BASE_LIBS) $(PAM_LIBS)
|
+ $(CC_LINK) -o $@ $(OBJS) $(FTPD_LIBS) $(PTY_LIB) $(UTIL_LIB) $(MISSING_LIB) $(GSS_LIBS) $(PAM_LIBS) $(LIBS)
|
||||||
|
|
||||||
generate-files-mac: ftpcmd.c
|
generate-files-mac: ftpcmd.c
|
||||||
|
|
||||||
@@ -62,6 +64,8 @@ secure.o: $(srcdir)/../ftp/secure.c
|
@@ -61,4 +63,7 @@ ftpcmd.o: ftpcmd.c
|
||||||
|
popen.o: $(srcdir)/popen.c
|
||||||
|
vers.o: $(srcdir)/vers.c
|
||||||
|
|
||||||
getdtablesize.o: $(srcdir)/../../bsd/getdtablesize.c
|
|
||||||
$(CC) -c $(ALL_CFLAGS) $(srcdir)/../../bsd/getdtablesize.c
|
|
||||||
+pam.o: $(srcdir)/../../bsd/pam.c
|
+pam.o: $(srcdir)/../../bsd/pam.c
|
||||||
+ $(CC) -c $(ALL_CFLAGS) $(srcdir)/../../bsd/pam.c
|
+ $(CC) -c $(ALL_CFLAGS) $(srcdir)/../../bsd/pam.c
|
||||||
|
|
||||||
setenv.o: $(srcdir)/../../bsd/setenv.c
|
|
||||||
$(CC) -c $(ALL_CFLAGS) $(srcdir)/../../bsd/setenv.c
|
|
||||||
diff -up krb5-1.7/src/clients/ksu/main.c krb5-1.7/src/clients/ksu/main.c
|
|
||||||
--- krb5-1.7/src/clients/ksu/main.c 2008-12-01 12:09:59.000000000 -0500
|
|
||||||
+++ krb5-1.7/src/clients/ksu/main.c 2009-06-04 13:45:57.000000000 -0400
|
|
||||||
@@ -25,6 +25,7 @@
|
|
||||||
* KSU was writen by: Ari Medvinsky, ari@isi.edu
|
|
||||||
*/
|
|
||||||
|
|
||||||
+#include "autoconf.h"
|
|
||||||
#include "ksu.h"
|
|
||||||
#include "adm_proto.h"
|
|
||||||
#include <sys/types.h>
|
|
||||||
@@ -32,6 +33,10 @@
|
|
||||||
#include <signal.h>
|
|
||||||
#include <grp.h>
|
|
||||||
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+#include "../../appl/bsd/pam.h"
|
|
||||||
+#endif
|
|
||||||
+
|
+
|
||||||
/* globals */
|
# NOPOSTFIX
|
||||||
char * prog_name;
|
|
||||||
int auth_debug =0;
|
|
||||||
@@ -39,6 +44,7 @@
|
|
||||||
char k5users_path[MAXPATHLEN];
|
|
||||||
char * gb_err = NULL;
|
|
||||||
int quiet = 0;
|
|
||||||
+int force_fork = 0;
|
|
||||||
/***********/
|
|
||||||
|
|
||||||
#define _DEF_CSH "/bin/csh"
|
|
||||||
@@ -585,6 +591,25 @@
|
|
||||||
prog_name,target_user,client_name,
|
|
||||||
source_user,ontty());
|
|
||||||
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+ if (appl_pam_enabled(ksu_context, "ksu")) {
|
|
||||||
+ if (appl_pam_acct_mgmt(KSU_PAM_SERVICE, 1, target_user, NULL,
|
|
||||||
+ NULL, source_user,
|
|
||||||
+ ttyname(STDERR_FILENO)) != 0) {
|
|
||||||
+ fprintf(stderr, "Access denied for %s.\n", target_user);
|
|
||||||
+ sweep_up(ksu_context, cc_target);
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+ if (appl_pam_requires_chauthtok()) {
|
|
||||||
+ fprintf(stderr, "Password change required for %s.\n",
|
|
||||||
+ target_user);
|
|
||||||
+ sweep_up(ksu_context, cc_target);
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+ force_fork++;
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/* Run authorization as target.*/
|
|
||||||
if (krb5_seteuid(target_uid)) {
|
|
||||||
com_err(prog_name, errno, "while switching to target for authorization check");
|
|
||||||
@@ -791,7 +816,7 @@
|
|
||||||
fprintf(stderr, "program to be execed %s\n",params[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
- if( keep_target_cache ) {
|
|
||||||
+ if( keep_target_cache && !force_fork ) {
|
|
||||||
execv(params[0], params);
|
|
||||||
com_err(prog_name, errno, "while trying to execv %s",
|
|
||||||
params[0]);
|
|
||||||
@@ -799,6 +824,33 @@
|
|
||||||
exit(1);
|
|
||||||
}else{
|
|
||||||
statusp = 1;
|
|
||||||
+
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+ if (appl_pam_enabled(ksu_context, "ksu")) {
|
|
||||||
+ if (appl_pam_session_open() != 0) {
|
|
||||||
+ fprintf(stderr, "Error opening session for %s.\n", target_user);
|
|
||||||
+ sweep_up(ksu_context, cc_target);
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+#ifdef DEBUG
|
|
||||||
+ if (auth_debug){
|
|
||||||
+ printf(" Opened PAM session.\n");
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+ if (appl_pam_cred_init()) {
|
|
||||||
+ fprintf(stderr, "Error initializing credentials for %s.\n",
|
|
||||||
+ target_user);
|
|
||||||
+ sweep_up(ksu_context, cc_target);
|
|
||||||
+ exit(1);
|
|
||||||
+ }
|
|
||||||
+#ifdef DEBUG
|
|
||||||
+ if (auth_debug){
|
|
||||||
+ printf(" Initialized PAM credentials.\n");
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
switch ((child_pid = fork())) {
|
|
||||||
default:
|
|
||||||
if (auth_debug){
|
|
||||||
@@ -822,15 +874,34 @@
|
|
||||||
if (ret_pid == -1) {
|
|
||||||
com_err(prog_name, errno, "while calling waitpid");
|
|
||||||
}
|
|
||||||
- sweep_up(ksu_context, cc_target);
|
|
||||||
+ if( !keep_target_cache ) {
|
|
||||||
+ sweep_up(ksu_context, cc_target);
|
|
||||||
+ }
|
|
||||||
exit (statusp);
|
|
||||||
case -1:
|
|
||||||
com_err(prog_name, errno, "while trying to fork.");
|
|
||||||
sweep_up(ksu_context, cc_target);
|
|
||||||
exit (1);
|
|
||||||
case 0:
|
|
||||||
+#ifdef USE_PAM
|
|
||||||
+ if (appl_pam_enabled(ksu_context, "ksu")) {
|
|
||||||
+ if (appl_pam_setenv() != 0) {
|
|
||||||
+ fprintf(stderr, "Error setting up environment for %s.\n",
|
|
||||||
+ target_user);
|
|
||||||
+ exit (1);
|
|
||||||
+ }
|
|
||||||
+#ifdef DEBUG
|
|
||||||
+ if (auth_debug){
|
|
||||||
+ printf(" Set up PAM environment.\n");
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
execv(params[0], params);
|
|
||||||
com_err(prog_name, errno, "while trying to execv %s", params[0]);
|
|
||||||
+ if( keep_target_cache ) {
|
|
||||||
+ sweep_up(ksu_context, cc_target);
|
|
||||||
+ }
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff -up krb5-1.7/src/clients/ksu/Makefile.in krb5-1.7/src/clients/ksu/Makefile.in
|
|
||||||
--- krb5-1.7/src/clients/ksu/Makefile.in 2009-01-05 15:27:53.000000000 -0500
|
|
||||||
+++ krb5-1.7/src/clients/ksu/Makefile.in 2009-06-04 13:45:57.000000000 -0400
|
|
||||||
@@ -15,6 +15,7 @@ SRCS = \
|
|
||||||
$(srcdir)/ccache.c \
|
|
||||||
$(srcdir)/authorization.c \
|
|
||||||
$(srcdir)/main.c \
|
|
||||||
+ $(srcdir)/../../appl/bsd/pam.c \
|
|
||||||
$(srcdir)/heuristic.c \
|
|
||||||
$(srcdir)/xmalloc.c \
|
|
||||||
$(srcdir)/setenv.c
|
|
||||||
@@ -23,13 +24,17 @@ OBJS = \
|
|
||||||
ccache.o \
|
|
||||||
authorization.o \
|
|
||||||
main.o \
|
|
||||||
+ pam.o \
|
|
||||||
heuristic.o \
|
|
||||||
xmalloc.o @SETENVOBJ@
|
|
||||||
|
|
||||||
all:: ksu
|
|
||||||
|
|
||||||
ksu: $(OBJS) $(KRB5_BASE_DEPLIBS)
|
|
||||||
- $(CC_LINK) -o $@ $(OBJS) $(KRB5_BASE_LIBS) $(KSU_LIBS)
|
|
||||||
+ $(CC_LINK) -o $@ $(OBJS) $(KRB5_BASE_LIBS) $(KSU_LIBS) $(PAM_LIBS)
|
|
||||||
+
|
|
||||||
+pam.o: $(srcdir)/../../appl/bsd/pam.c
|
|
||||||
+ $(CC) $(ALL_CFLAGS) -c $<
|
|
||||||
|
|
||||||
clean::
|
|
||||||
$(RM) ksu
|
|
||||||
diff -up krb5-1.7/src/config/pre.in krb5-1.7/src/config/pre.in
|
|
||||||
--- krb5-1.7/src/config/pre.in 2009-04-15 16:06:35.000000000 -0400
|
|
||||||
+++ krb5-1.7/src/config/pre.in 2009-06-04 13:45:57.000000000 -0400
|
|
||||||
@@ -181,6 +181,7 @@ LD_UNRESOLVED_PREFIX = @LD_UNRESOLVED_PR
|
|
||||||
LD_SHLIBDIR_PREFIX = @LD_SHLIBDIR_PREFIX@
|
|
||||||
LDARGS = @LDARGS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
+PAM_LIBS = @PAM_LIBS@
|
|
||||||
|
|
||||||
INSTALL=@INSTALL@
|
|
||||||
INSTALL_STRIP=
|
|
||||||
diff -up krb5-1.7/src/configure.in krb5-1.7/src/configure.in
|
|
||||||
--- krb5-1.7/src/configure.in 2009-04-15 16:07:03.000000000 -0400
|
|
||||||
+++ krb5-1.7/src/configure.in 2009-06-04 13:45:57.000000000 -0400
|
|
||||||
@@ -1040,6 +1040,8 @@ fi
|
|
||||||
dnl
|
|
||||||
AC_CONFIG_SUBDIRS(appl/libpty appl/bsd appl/gssftp appl/telnet)
|
|
||||||
|
|
||||||
+KRB5_WITH_PAM
|
|
||||||
+
|
|
||||||
AC_CONFIG_FILES(krb5-config, [chmod +x krb5-config])
|
|
||||||
V5_AC_OUTPUT_MAKEFILE(.
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
|||||||
Start with only TERM defined in the environment, like NetKit rlogind does, and
|
Start with only TERM defined in the environment, like NetKit rlogind does, and
|
||||||
KRB5CCNAME, which we set ourselves.
|
KRB5CCNAME, which we set ourselves.
|
||||||
--- krb5-1.3/src/appl/bsd/krlogind.c
|
|
||||||
+++ krb5-1.3/src/appl/bsd/krlogind.c
|
diff -up krb5-appl-1.0/bsd/krlogind.c.rlogind-environ krb5-appl-1.0/bsd/krlogind.c
|
||||||
@@ -713,6 +713,9 @@
|
--- krb5-appl-1.0/bsd/krlogind.c.rlogind-environ 2009-11-21 15:29:19.000000000 -0500
|
||||||
|
+++ krb5-appl-1.0/bsd/krlogind.c 2010-03-05 11:07:34.000000000 -0500
|
||||||
|
@@ -667,6 +667,9 @@ void doit(f, fromp)
|
||||||
#else
|
#else
|
||||||
struct sgttyb b;
|
struct sgttyb b;
|
||||||
#endif /* POSIX_TERMIOS */
|
#endif /* POSIX_TERMIOS */
|
||||||
@ -10,9 +12,9 @@ KRB5CCNAME, which we set ourselves.
|
|||||||
+ char *bare_environ[] = {environ_term, environ_ccname, NULL};
|
+ char *bare_environ[] = {environ_term, environ_ccname, NULL};
|
||||||
+
|
+
|
||||||
if ((retval = pty_open_slave(line, &t))) {
|
if ((retval = pty_open_slave(line, &t))) {
|
||||||
fatal(f, error_message(retval));
|
fatal(f, pty_error_message(retval));
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -819,11 +822,15 @@
|
@@ -773,11 +776,15 @@ void doit(f, fromp)
|
||||||
/* use the vendors login, which has -p and -f. Tested on
|
/* use the vendors login, which has -p and -f. Tested on
|
||||||
* AIX 4.1.4 and HPUX 10
|
* AIX 4.1.4 and HPUX 10
|
||||||
*/
|
*/
|
||||||
@ -23,15 +25,14 @@ KRB5CCNAME, which we set ourselves.
|
|||||||
{
|
{
|
||||||
char *cp;
|
char *cp;
|
||||||
- if ((cp = strchr(term,'/')))
|
- if ((cp = strchr(term,'/')))
|
||||||
- *cp = '\0';
|
|
||||||
- setenv("TERM",term, 1);
|
|
||||||
+ snprintf(environ_term, sizeof(environ_term) - 1, "TERM=%s", term);
|
+ snprintf(environ_term, sizeof(environ_term) - 1, "TERM=%s", term);
|
||||||
+ if ((cp = strchr(environ_term,'/')))
|
+ if ((cp = strchr(environ_term,'/')))
|
||||||
+ *cp = '\0';
|
*cp = '\0';
|
||||||
|
- setenv("TERM",term, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = pty_make_sane_hostname((struct sockaddr *) fromp, maxhostlen,
|
retval = pty_make_sane_hostname((struct sockaddr *) fromp, maxhostlen,
|
||||||
@@ -832,13 +839,13 @@
|
@@ -786,13 +793,13 @@ void doit(f, fromp)
|
||||||
if (retval)
|
if (retval)
|
||||||
fatalperror(f, "failed make_sane_hostname");
|
fatalperror(f, "failed make_sane_hostname");
|
||||||
if (passwd_req)
|
if (passwd_req)
|
@ -1,35 +0,0 @@
|
|||||||
Fall back to TCP on kdc-unresolvable/unreachable errors. We still have
|
|
||||||
to wait for UDP to fail, so this might not be ideal. RT #5868.
|
|
||||||
|
|
||||||
Index: src/lib/krb5/os/changepw.c
|
|
||||||
===================================================================
|
|
||||||
--- src/lib/krb5/os/changepw.c (revision 20199)
|
|
||||||
+++ src/lib/krb5/os/changepw.c (working copy)
|
|
||||||
@@ -251,11 +251,22 @@
|
|
||||||
NULL,
|
|
||||||
NULL
|
|
||||||
))) {
|
|
||||||
-
|
|
||||||
- /*
|
|
||||||
- * Here we may want to switch to TCP on some errors.
|
|
||||||
- * right?
|
|
||||||
- */
|
|
||||||
+ /* if we're not using a stream socket, and it's an error which
|
|
||||||
+ * might reasonably be specific to a datagram "connection", try
|
|
||||||
+ * again with a stream socket */
|
|
||||||
+ if (!useTcp) {
|
|
||||||
+ switch (code) {
|
|
||||||
+ case KRB5_KDC_UNREACH:
|
|
||||||
+ case KRB5_REALM_CANT_RESOLVE:
|
|
||||||
+ case KRB5KRB_ERR_RESPONSE_TOO_BIG:
|
|
||||||
+ /* should we do this for more result codes than these? */
|
|
||||||
+ krb5int_free_addrlist (&al);
|
|
||||||
+ useTcp = 1;
|
|
||||||
+ continue;
|
|
||||||
+ default:
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
389
krb5.spec
389
krb5.spec
@ -12,14 +12,18 @@
|
|||||||
|
|
||||||
Summary: The Kerberos network authentication system
|
Summary: The Kerberos network authentication system
|
||||||
Name: krb5
|
Name: krb5
|
||||||
Version: 1.7.1
|
Version: 1.8
|
||||||
Release: 6%{?dist}
|
Release: 1%{?dist}
|
||||||
# Maybe we should explode from the now-available-to-everybody tarball instead?
|
# Maybe we should explode from the now-available-to-everybody tarball instead?
|
||||||
# http://web.mit.edu/kerberos/dist/krb5/1.7/krb5-1.7.1-signed.tar
|
# http://web.mit.edu/kerberos/dist/krb5/1.7/krb5-1.7.1-signed.tar
|
||||||
Source0: krb5-%{version}.tar.gz
|
Source0: krb5-%{version}.tar.gz
|
||||||
Source1: krb5-%{version}.tar.gz.asc
|
Source1: krb5-%{version}.tar.gz.asc
|
||||||
|
# Everything that needs a krb5-appl counterpart will have it with number + 100
|
||||||
|
# until we get the package split done, else the telnet/ftp/rcmd stuff will just
|
||||||
|
# "vanish".
|
||||||
|
Source100: krb5-appl-%{appl_version}.tar.gz
|
||||||
|
Source101: krb5-appl-%{appl_version}.tar.gz.asc
|
||||||
Source2: kpropd.init
|
Source2: kpropd.init
|
||||||
Source3: krb5-appl-%{appl_version}.tar.gz
|
|
||||||
Source4: kadmind.init
|
Source4: kadmind.init
|
||||||
Source5: krb5kdc.init
|
Source5: krb5kdc.init
|
||||||
Source6: krb5.conf
|
Source6: krb5.conf
|
||||||
@ -41,7 +45,8 @@ Source22: ekrb5-telnet.xinetd
|
|||||||
# and tarred up.
|
# and tarred up.
|
||||||
Source23: krb5-%{version}-pdf.tar.gz
|
Source23: krb5-%{version}-pdf.tar.gz
|
||||||
Source24: krb5-tex-pdf.sh
|
Source24: krb5-tex-pdf.sh
|
||||||
Source25: krb5-trunk-manpaths.txt
|
Source25: krb5-1.8-manpaths.txt
|
||||||
|
Source125: krb5-appl-1.0-manpaths.txt
|
||||||
Source26: gssftp.pamd
|
Source26: gssftp.pamd
|
||||||
Source27: kshell.pamd
|
Source27: kshell.pamd
|
||||||
Source28: ekshell.pamd
|
Source28: ekshell.pamd
|
||||||
@ -51,45 +56,43 @@ Source31: kerberos-adm.portreserve
|
|||||||
Source32: krb5_prop.portreserve
|
Source32: krb5_prop.portreserve
|
||||||
|
|
||||||
Patch3: krb5-1.3-netkit-rsh.patch
|
Patch3: krb5-1.3-netkit-rsh.patch
|
||||||
Patch4: krb5-1.3-rlogind-environ.patch
|
Patch4: krb5-appl-1.0-rlogind-environ.patch
|
||||||
Patch5: krb5-1.3-ksu-access.patch
|
Patch5: krb5-1.8-ksu-access.patch
|
||||||
Patch6: krb5-1.5-ksu-path.patch
|
Patch6: krb5-1.8-ksu-path.patch
|
||||||
Patch11: krb5-1.2.1-passive.patch
|
Patch11: krb5-1.2.1-passive.patch
|
||||||
Patch12: krb5-1.7-ktany.patch
|
Patch12: krb5-1.7-ktany.patch
|
||||||
Patch14: krb5-1.3-ftp-glob.patch
|
Patch14: krb5-1.3-ftp-glob.patch
|
||||||
Patch16: krb5-1.7-buildconf.patch
|
Patch16: krb5-1.7-buildconf.patch
|
||||||
Patch23: krb5-1.3.1-dns.patch
|
Patch23: krb5-1.3.1-dns.patch
|
||||||
Patch26: krb5-1.3.2-efence.patch
|
Patch26: krb5-1.3.2-efence.patch
|
||||||
Patch29: krb5-1.7-kprop-mktemp.patch
|
Patch29: krb5-1.8-kprop-mktemp.patch
|
||||||
Patch30: krb5-1.3.4-send-pr-tempfile.patch
|
Patch30: krb5-1.3.4-send-pr-tempfile.patch
|
||||||
Patch33: krb5-1.7-io.patch
|
Patch33: krb5-appl-1.0-io.patch
|
||||||
Patch36: krb5-1.7-rcp-markus.patch
|
Patch36: krb5-1.7-rcp-markus.patch
|
||||||
Patch39: krb5-1.7-api.patch
|
Patch39: krb5-1.8-api.patch
|
||||||
Patch40: krb5-1.4.1-telnet-environ.patch
|
Patch40: krb5-1.4.1-telnet-environ.patch
|
||||||
Patch41: krb5-1.6.3-login-lpass.patch
|
|
||||||
Patch53: krb5-1.7-nodeplibs.patch
|
Patch53: krb5-1.7-nodeplibs.patch
|
||||||
Patch55: krb5-1.6.1-empty.patch
|
Patch55: krb5-1.6.1-empty.patch
|
||||||
Patch56: krb5-1.7-doublelog.patch
|
Patch56: krb5-1.7-doublelog.patch
|
||||||
Patch57: krb5-1.6.2-login_chdir.patch
|
Patch57: krb5-appl-1.0-login_chdir.patch
|
||||||
Patch58: krb5-1.6.2-key_exp.patch
|
Patch58: krb5-1.8-key_exp.patch
|
||||||
Patch59: krb5-trunk-kpasswd_tcp.patch
|
Patch59: krb5-1.8-kpasswd_tcp.patch
|
||||||
Patch60: krb5-1.7-pam.patch
|
Patch60: krb5-1.8-pam.patch
|
||||||
Patch61: krb5-trunk-manpaths.patch
|
Patch160: krb5-appl-1.0-pam.patch
|
||||||
Patch63: krb5-1.7-selinux-label.patch
|
Patch61: krb5-1.8-manpaths.patch
|
||||||
|
Patch161: krb5-appl-1.0-manpaths.patch
|
||||||
|
Patch63: krb5-1.8-selinux-label.patch
|
||||||
Patch70: krb5-trunk-kpasswd_tcp2.patch
|
Patch70: krb5-trunk-kpasswd_tcp2.patch
|
||||||
Patch71: krb5-1.7-dirsrv-accountlock.patch
|
Patch71: krb5-1.8-dirsrv-accountlock.patch
|
||||||
Patch72: krb5-1.6.3-ftp_fdleak.patch
|
Patch72: krb5-1.6.3-ftp_fdleak.patch
|
||||||
Patch73: krb5-1.6.3-ftp_glob_runique.patch
|
Patch73: krb5-1.6.3-ftp_glob_runique.patch
|
||||||
Patch79: krb5-trunk-ftp_mget_case.patch
|
Patch79: krb5-trunk-ftp_mget_case.patch
|
||||||
Patch86: krb5-1.7-time_t_size.patch
|
|
||||||
Patch88: krb5-1.7-sizeof.patch
|
Patch88: krb5-1.7-sizeof.patch
|
||||||
Patch89: krb5-1.7-largefile.patch
|
Patch89: krb5-appl-1.0-largefile.patch
|
||||||
Patch90: krb5-1.7-openssl-1.0.patch
|
|
||||||
Patch93: krb5-1.7-create_on_load.patch
|
Patch93: krb5-1.7-create_on_load.patch
|
||||||
Patch95: krb5-1.7-opte.patch
|
Patch95: krb5-1.8-opte.patch
|
||||||
Patch96: krb5-1.7-exp_warn.patch
|
Patch96: krb5-1.8-exp_warn.patch
|
||||||
Patch97: http://web.mit.edu/kerberos/advisories/2010-001-patch.txt
|
Patch98: krb5-1.8-kpasswd_ccache.patch
|
||||||
Patch98: krb5-1.7.1-kpasswd_ccache.patch
|
|
||||||
|
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: http://web.mit.edu/kerberos/www/
|
URL: http://web.mit.edu/kerberos/www/
|
||||||
@ -207,8 +210,7 @@ Group: System Environment/Base
|
|||||||
Requires: %{name}-workstation = %{version}-%{release}
|
Requires: %{name}-workstation = %{version}-%{release}
|
||||||
Requires(post): initscripts
|
Requires(post): initscripts
|
||||||
Requires(postun): initscripts
|
Requires(postun): initscripts
|
||||||
# mktemp is used by krb5-send-pr
|
Requires: xinetd, /etc/pam.d/%{login_pam_service}
|
||||||
Requires: mktemp, xinetd, /etc/pam.d/%{login_pam_service}
|
|
||||||
|
|
||||||
%description workstation-servers
|
%description workstation-servers
|
||||||
Kerberos is a network authentication system. The krb5-workstation-servers
|
Kerberos is a network authentication system. The krb5-workstation-servers
|
||||||
@ -228,50 +230,69 @@ to obtain initial credentials from a KDC using a private key and a
|
|||||||
certificate.
|
certificate.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -a 3 -a 23
|
%setup -q -a 23 -a 100
|
||||||
ln -s README LICENSE
|
ln -s NOTICE LICENSE
|
||||||
pushd src
|
|
||||||
%patch60 -p2 -b .pam
|
%patch60 -p1 -b .pam
|
||||||
%patch61 -p0 -b .manpaths
|
pushd krb5-appl-%{appl_version}
|
||||||
|
%patch160 -p1 -b .pam
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
%patch61 -p1 -b .manpaths
|
||||||
|
pushd krb5-appl-%{appl_version}
|
||||||
|
%patch161 -p1 -b .manpaths
|
||||||
|
popd
|
||||||
|
|
||||||
%patch63 -p1 -b .selinux-label
|
%patch63 -p1 -b .selinux-label
|
||||||
%patch3 -p1 -b .netkit-rsh
|
pushd krb5-appl-%{appl_version}
|
||||||
|
%patch3 -p3 -b .netkit-rsh
|
||||||
%patch4 -p1 -b .rlogind-environ
|
%patch4 -p1 -b .rlogind-environ
|
||||||
|
popd
|
||||||
|
|
||||||
%patch5 -p1 -b .ksu-access
|
%patch5 -p1 -b .ksu-access
|
||||||
%patch6 -p1 -b .ksu-path
|
%patch6 -p1 -b .ksu-path
|
||||||
%patch11 -p1 -b .passive
|
pushd krb5-appl-%{appl_version}
|
||||||
|
%patch11 -p3 -b .passive
|
||||||
|
popd
|
||||||
%patch12 -p1 -b .ktany
|
%patch12 -p1 -b .ktany
|
||||||
%patch14 -p1 -b .ftp-glob
|
pushd krb5-appl-%{appl_version}
|
||||||
|
%patch14 -p3 -b .ftp-glob
|
||||||
|
popd
|
||||||
%patch16 -p1 -b .buildconf
|
%patch16 -p1 -b .buildconf
|
||||||
%patch23 -p1 -b .dns
|
%patch23 -p1 -b .dns
|
||||||
# Removes a malloc(0) case, nothing more.
|
# Removes a malloc(0) case, nothing more.
|
||||||
# %patch26 -p1 -b .efence
|
# %patch26 -p1 -b .efence
|
||||||
%patch29 -p1 -b .kprop-mktemp
|
%patch29 -p1 -b .kprop-mktemp
|
||||||
%patch30 -p1 -b .send-pr-tempfile
|
%patch30 -p1 -b .send-pr-tempfile
|
||||||
|
pushd krb5-appl-%{appl_version}
|
||||||
%patch33 -p1 -b .io
|
%patch33 -p1 -b .io
|
||||||
%patch36 -p1 -b .rcp-markus
|
%patch36 -p3 -b .rcp-markus
|
||||||
|
popd
|
||||||
%patch39 -p1 -b .api
|
%patch39 -p1 -b .api
|
||||||
%patch40 -p1 -b .telnet-environ
|
pushd krb5-appl-%{appl_version}
|
||||||
%patch41 -p1 -b .login-lpass
|
%patch40 -p3 -b .telnet-environ
|
||||||
|
popd
|
||||||
%patch53 -p1 -b .nodeplibs
|
%patch53 -p1 -b .nodeplibs
|
||||||
#%patch55 -p1 -b .empty
|
#%patch55 -p1 -b .empty
|
||||||
%patch56 -p1 -b .doublelog
|
%patch56 -p1 -b .doublelog
|
||||||
#%patch57 -p1 -b .login_chdir
|
pushd krb5-appl-%{appl_version}
|
||||||
|
%patch57 -p1 -b .login_chdir
|
||||||
|
popd
|
||||||
%patch58 -p1 -b .key_exp
|
%patch58 -p1 -b .key_exp
|
||||||
%patch59 -p0 -b .kpasswd_tcp
|
%patch59 -p1 -b .kpasswd_tcp
|
||||||
#%patch70 -p0 -b .kpasswd_tcp2
|
#%patch70 -p0 -b .kpasswd_tcp2
|
||||||
%patch71 -p1 -b .dirsrv-accountlock
|
%patch71 -p1 -b .dirsrv-accountlock
|
||||||
%patch72 -p1 -b .ftp_fdleak
|
pushd krb5-appl-%{appl_version}
|
||||||
%patch73 -p1 -b .ftp_glob_runique
|
%patch72 -p3 -b .ftp_fdleak
|
||||||
%patch79 -p0 -b .ftp_mget_case
|
%patch73 -p3 -b .ftp_glob_runique
|
||||||
%patch86 -p1 -b .time_t_size
|
%patch79 -p2 -b .ftp_mget_case
|
||||||
%patch88 -p1 -b .sizeof
|
%patch88 -p3 -b .sizeof
|
||||||
%patch89 -p1 -b .largefile
|
%patch89 -p1 -b .largefile
|
||||||
%patch90 -p0 -b .openssl-1.0
|
popd
|
||||||
%patch93 -p1 -b .create_on_load
|
# Shouldn't be necessary in 1.8.
|
||||||
|
##%patch93 -p1 -b .create_on_load
|
||||||
%patch95 -p1 -b .opte
|
%patch95 -p1 -b .opte
|
||||||
%patch96 -p1 -b .exp_warn
|
%patch96 -p1 -b .exp_warn
|
||||||
%patch97 -p1 -b .2010-001
|
|
||||||
%patch98 -p1 -b .kpasswd-ccache
|
%patch98 -p1 -b .kpasswd-ccache
|
||||||
gzip doc/*.ps
|
gzip doc/*.ps
|
||||||
|
|
||||||
@ -284,7 +305,7 @@ sed -i -e '1c\
|
|||||||
\\usepackage{hyperref}' doc/implement/implement.tex
|
\\usepackage{hyperref}' doc/implement/implement.tex
|
||||||
|
|
||||||
# Take the execute bit off of documentation.
|
# Take the execute bit off of documentation.
|
||||||
chmod -x doc/krb5-protocol/*.txt doc/*.html
|
chmod -x doc/krb5-protocol/*.txt doc/*.html doc/*/*.html
|
||||||
|
|
||||||
# Rename the man pages so that they'll get generated correctly. Uses the
|
# Rename the man pages so that they'll get generated correctly. Uses the
|
||||||
# "krb5-trunk-manpaths.txt" source file.
|
# "krb5-trunk-manpaths.txt" source file.
|
||||||
@ -293,6 +314,11 @@ cat %{SOURCE25} | while read manpage ; do
|
|||||||
mv "$manpage" "$manpage".in
|
mv "$manpage" "$manpage".in
|
||||||
done
|
done
|
||||||
popd
|
popd
|
||||||
|
pushd krb5-appl-%{appl_version}
|
||||||
|
cat %{SOURCE125} | while read manpage ; do
|
||||||
|
mv "$manpage" "$manpage".in
|
||||||
|
done
|
||||||
|
popd
|
||||||
|
|
||||||
# Check that the PDFs we built earlier match this source tree, using the
|
# Check that the PDFs we built earlier match this source tree, using the
|
||||||
# "krb5-tex-pdf.sh" source file.
|
# "krb5-tex-pdf.sh" source file.
|
||||||
@ -315,20 +341,21 @@ egrep -iv '(^$|^dn:|^changetype:|^add:)' $inldif >> 60kerberos.ldif
|
|||||||
touch -r $inldif 60kerberos.ldif
|
touch -r $inldif 60kerberos.ldif
|
||||||
|
|
||||||
# Rebuild the configure scripts.
|
# Rebuild the configure scripts.
|
||||||
cd src
|
pushd src
|
||||||
top=`pwd`
|
autoheader
|
||||||
for configurein in `find -name configure.in -type f` ; do
|
autoconf
|
||||||
pushd `dirname $configurein`
|
popd
|
||||||
grep -q A._CONFIG_HEADER configure.in && autoheader -I "$top"
|
|
||||||
autoconf -I "$top"
|
pushd krb5-appl-%{appl_version}
|
||||||
popd
|
autoheader
|
||||||
done
|
autoconf
|
||||||
|
popd
|
||||||
|
|
||||||
%build
|
%build
|
||||||
cd src
|
cd src
|
||||||
INCLUDES=-I%{_includedir}/et
|
INCLUDES=-I%{_includedir}/et
|
||||||
# Work out the CFLAGS and CPPFLAGS which we intend to use.
|
# Work out the CFLAGS and CPPFLAGS which we intend to use.
|
||||||
CFLAGS="`echo $RPM_OPT_FLAGS $DEFINES $INCLUDES -fPIC -fno-strict-aliasing`"
|
CFLAGS="`echo $RPM_OPT_FLAGS $DEFINES $INCLUDES -fPIC`"
|
||||||
CPPFLAGS="`echo $DEFINES $INCLUDES`"
|
CPPFLAGS="`echo $DEFINES $INCLUDES`"
|
||||||
%configure \
|
%configure \
|
||||||
CC="%{__cc}" \
|
CC="%{__cc}" \
|
||||||
@ -340,10 +367,6 @@ CPPFLAGS="`echo $DEFINES $INCLUDES`"
|
|||||||
SS_LIB="-lss -lncurses" \
|
SS_LIB="-lss -lncurses" \
|
||||||
%endif
|
%endif
|
||||||
--enable-shared \
|
--enable-shared \
|
||||||
--bindir=%{krb5prefix}/bin \
|
|
||||||
--mandir=%{krb5prefix}/man \
|
|
||||||
--sbindir=%{krb5prefix}/sbin \
|
|
||||||
--datadir=%{krb5prefix}/share \
|
|
||||||
--localstatedir=%{_var}/kerberos \
|
--localstatedir=%{_var}/kerberos \
|
||||||
--disable-rpath \
|
--disable-rpath \
|
||||||
--with-system-et \
|
--with-system-et \
|
||||||
@ -364,11 +387,28 @@ CPPFLAGS="`echo $DEFINES $INCLUDES`"
|
|||||||
--disable-pkinit \
|
--disable-pkinit \
|
||||||
%endif
|
%endif
|
||||||
--with-pam \
|
--with-pam \
|
||||||
--with-pam-login-service=%{login_pam_service} \
|
|
||||||
--with-selinux
|
--with-selinux
|
||||||
# Now build it.
|
# Now build it.
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
# The applications, too. Build everything position-independent. We only get
|
||||||
|
# away with this if our build dependencies drag an older krb5-devel onto the
|
||||||
|
# system.
|
||||||
|
pushd ../krb5-appl-%{appl_version}
|
||||||
|
CFLAGS="`echo $RPM_OPT_FLAGS $DEFINES $INCLUDES -fPIE -fno-strict-aliasing`"
|
||||||
|
LDFLAGS="-pie"
|
||||||
|
%configure \
|
||||||
|
CFLAGS="$CFLAGS" \
|
||||||
|
LDFLAGS="$LDFLAGS" \
|
||||||
|
--bindir=%{krb5prefix}/bin \
|
||||||
|
--mandir=%{krb5prefix}/man \
|
||||||
|
--sbindir=%{krb5prefix}/sbin \
|
||||||
|
--datadir=%{krb5prefix}/share \
|
||||||
|
--with-pam \
|
||||||
|
--with-pam-login-service=%{login_pam_service}
|
||||||
|
make %{?_smp_mflags}
|
||||||
|
popd
|
||||||
|
|
||||||
# Run the test suite. We can't actually do this in the build system.
|
# Run the test suite. We can't actually do this in the build system.
|
||||||
: make check TMPDIR=%{_tmppath}
|
: make check TMPDIR=%{_tmppath}
|
||||||
|
|
||||||
@ -399,7 +439,7 @@ install -pm 644 %{SOURCE6} $RPM_BUILD_ROOT/etc/krb5.conf
|
|||||||
|
|
||||||
# Login-time scriptlets (krb5.sh, krb5.csh) to fix the PATH variable.
|
# Login-time scriptlets (krb5.sh, krb5.csh) to fix the PATH variable.
|
||||||
mkdir -p $RPM_BUILD_ROOT/etc/profile.d
|
mkdir -p $RPM_BUILD_ROOT/etc/profile.d
|
||||||
for subpackage in devel workstation ; do
|
for subpackage in workstation-clients workstation-servers ; do
|
||||||
install -pm 644 %{SOURCE7} \
|
install -pm 644 %{SOURCE7} \
|
||||||
$RPM_BUILD_ROOT/etc/profile.d/krb5-$subpackage.sh
|
$RPM_BUILD_ROOT/etc/profile.d/krb5-$subpackage.sh
|
||||||
install -pm 644 %{SOURCE8} \
|
install -pm 644 %{SOURCE8} \
|
||||||
@ -467,12 +507,13 @@ install -pdm 755 $RPM_BUILD_ROOT/%{_libdir}/krb5/plugins/kdb
|
|||||||
install -pdm 755 $RPM_BUILD_ROOT/%{_libdir}/krb5/plugins/authdata
|
install -pdm 755 $RPM_BUILD_ROOT/%{_libdir}/krb5/plugins/authdata
|
||||||
|
|
||||||
# The rest of the binaries, headers, libraries, and docs.
|
# The rest of the binaries, headers, libraries, and docs.
|
||||||
make -C src DESTDIR=$RPM_BUILD_ROOT install
|
make -C src DESTDIR=$RPM_BUILD_ROOT EXAMPLEDIR=%{_docdir}/krb5-libs-%{version}/examples install
|
||||||
|
make -C krb5-appl-%{appl_version} DESTDIR=$RPM_BUILD_ROOT install
|
||||||
|
|
||||||
# Munge krb5-config yet again. This is totally wrong for 64-bit, but chunks
|
# Munge krb5-config yet again. This is totally wrong for 64-bit, but chunks
|
||||||
# of the buildconf patch already conspire to strip out /usr/<anything> from the
|
# of the buildconf patch already conspire to strip out /usr/<anything> from the
|
||||||
# list of link flags, and it helps prevent file conflicts on multilib systems.
|
# list of link flags, and it helps prevent file conflicts on multilib systems.
|
||||||
sed -r -i -e 's|^libdir=/usr/lib(64)?$|libdir=/usr/lib|g' $RPM_BUILD_ROOT%{krb5prefix}/bin/krb5-config
|
sed -r -i -e 's|^libdir=/usr/lib(64)?$|libdir=/usr/lib|g' $RPM_BUILD_ROOT%{_bindir}/krb5-config
|
||||||
|
|
||||||
# Move specific libraries from %{_libdir} to /%{_lib}, and fixup the symlinks.
|
# Move specific libraries from %{_libdir} to /%{_lib}, and fixup the symlinks.
|
||||||
touch $RPM_BUILD_ROOT/rootfile
|
touch $RPM_BUILD_ROOT/rootfile
|
||||||
@ -489,13 +530,6 @@ for library in libgssapi_krb5 libgssrpc libk5crypto libkrb5 libkrb5support ; do
|
|||||||
popd
|
popd
|
||||||
done
|
done
|
||||||
|
|
||||||
# Move man pages which will be in the -libs subpackage into %%{_mandir}'s tree.
|
|
||||||
for man in man1/tmac.doc man1/kerberos.1 man5/.k5login.5 man5/krb5.conf.5 ; do
|
|
||||||
mkdir -p $RPM_BUILD_ROOT/%{_mandir}/${man%%/*}
|
|
||||||
mv $RPM_BUILD_ROOT/%{krb5prefix}/man/${man} \
|
|
||||||
$RPM_BUILD_ROOT/%{_mandir}/${man%%/*}/
|
|
||||||
done
|
|
||||||
|
|
||||||
%clean
|
%clean
|
||||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
@ -574,62 +608,56 @@ fi
|
|||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
%files workstation
|
%files workstation
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root,-)
|
||||||
%docdir %{krb5prefix}/man
|
|
||||||
%config(noreplace) /etc/profile.d/krb5-workstation.sh
|
|
||||||
%config(noreplace) /etc/profile.d/krb5-workstation.csh
|
|
||||||
%doc doc/user*.ps.gz src/config-files/services.append
|
%doc doc/user*.ps.gz src/config-files/services.append
|
||||||
%doc doc/{kdestroy,kinit,klist,kpasswd,ksu}.html
|
%doc doc/{kdestroy,kinit,klist,kpasswd,ksu}.html
|
||||||
|
%doc doc/krb5-user.html
|
||||||
%attr(0755,root,root) %doc src/config-files/convert-config-files
|
%attr(0755,root,root) %doc src/config-files/convert-config-files
|
||||||
%{_infodir}/krb5-user.info*
|
%{_infodir}/krb5-user.info*
|
||||||
|
|
||||||
%dir %{krb5prefix}
|
|
||||||
%dir %{krb5prefix}/bin
|
|
||||||
%dir %{krb5prefix}/man
|
|
||||||
%dir %{krb5prefix}/man/man1
|
|
||||||
%dir %{krb5prefix}/man/man8
|
|
||||||
%dir %{krb5prefix}/sbin
|
|
||||||
|
|
||||||
# Clients of the KDC, including tools you're likely to need if you're running
|
# Clients of the KDC, including tools you're likely to need if you're running
|
||||||
# app servers other than those built from this source package.
|
# app servers other than those built from this source package.
|
||||||
%{krb5prefix}/bin/kdestroy
|
%{_bindir}/kdestroy
|
||||||
%{krb5prefix}/man/man1/kdestroy.1*
|
%{_mandir}/man1/kdestroy.1*
|
||||||
%{krb5prefix}/bin/kinit
|
%{_bindir}/kinit
|
||||||
%{krb5prefix}/man/man1/kinit.1*
|
%{_mandir}/man1/kinit.1*
|
||||||
%{krb5prefix}/bin/klist
|
%{_bindir}/klist
|
||||||
%{krb5prefix}/man/man1/klist.1*
|
%{_mandir}/man1/klist.1*
|
||||||
%{krb5prefix}/bin/kpasswd
|
%{_bindir}/kpasswd
|
||||||
%{krb5prefix}/man/man1/kpasswd.1*
|
%{_mandir}/man1/kpasswd.1*
|
||||||
|
|
||||||
%{krb5prefix}/bin/kvno
|
%{_bindir}/kvno
|
||||||
%{krb5prefix}/man/man1/kvno.1*
|
%{_mandir}/man1/kvno.1*
|
||||||
%{krb5prefix}/bin/kadmin
|
%{_bindir}/kadmin
|
||||||
%{krb5prefix}/man/man1/kadmin.1*
|
%{_mandir}/man1/kadmin.1*
|
||||||
%{krb5prefix}/bin/k5srvutil
|
%{_bindir}/k5srvutil
|
||||||
%{krb5prefix}/man/man1/k5srvutil.1*
|
%{_mandir}/man1/k5srvutil.1*
|
||||||
%{krb5prefix}/bin/ktutil
|
%{_bindir}/ktutil
|
||||||
%{krb5prefix}/man/man1/ktutil.1*
|
%{_mandir}/man1/ktutil.1*
|
||||||
|
|
||||||
# Doesn't really fit anywhere else.
|
# Doesn't really fit anywhere else.
|
||||||
%attr(4755,root,root) %{krb5prefix}/bin/ksu
|
%attr(4755,root,root) %{_bindir}/ksu
|
||||||
%{krb5prefix}/man/man1/ksu.1*
|
%{_mandir}/man1/ksu.1*
|
||||||
%config(noreplace) /etc/pam.d/ksu
|
%config(noreplace) /etc/pam.d/ksu
|
||||||
|
|
||||||
# Problem-reporting tool.
|
# Problem-reporting tool.
|
||||||
%{krb5prefix}/sbin/krb5-send-pr
|
%{_sbindir}/krb5-send-pr
|
||||||
%{krb5prefix}/man/man1/krb5-send-pr.1*
|
%dir %{_datadir}/gnats
|
||||||
|
%{_datadir}/gnats/mit
|
||||||
|
%{_mandir}/man1/krb5-send-pr.1*
|
||||||
|
|
||||||
%files workstation-clients
|
%files workstation-clients
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root,-)
|
||||||
%docdir %{krb5prefix}/man
|
%docdir %{krb5prefix}/man
|
||||||
%doc doc/{ftp,rcp,rlogin,rsh,telnet}.html
|
|
||||||
%attr(0755,root,root) %doc src/config-files/convert-config-files
|
%attr(0755,root,root) %doc src/config-files/convert-config-files
|
||||||
|
|
||||||
|
%config(noreplace) /etc/profile.d/krb5-workstation-clients.sh
|
||||||
|
%config(noreplace) /etc/profile.d/krb5-workstation-clients.csh
|
||||||
|
|
||||||
%dir %{krb5prefix}
|
%dir %{krb5prefix}
|
||||||
%dir %{krb5prefix}/bin
|
%dir %{krb5prefix}/bin
|
||||||
%dir %{krb5prefix}/man
|
%dir %{krb5prefix}/man
|
||||||
%dir %{krb5prefix}/man/man1
|
%dir %{krb5prefix}/man/man1
|
||||||
%dir %{krb5prefix}/sbin
|
|
||||||
|
|
||||||
# Used by both clients and servers.
|
# Used by both clients and servers.
|
||||||
%{krb5prefix}/bin/rcp
|
%{krb5prefix}/bin/rcp
|
||||||
@ -646,11 +674,15 @@ exit 0
|
|||||||
%{krb5prefix}/man/man1/rsh.1*
|
%{krb5prefix}/man/man1/rsh.1*
|
||||||
%{krb5prefix}/bin/telnet
|
%{krb5prefix}/bin/telnet
|
||||||
%{krb5prefix}/man/man1/telnet.1*
|
%{krb5prefix}/man/man1/telnet.1*
|
||||||
|
%{krb5prefix}/man/man1/tmac.doc*
|
||||||
|
|
||||||
%files workstation-servers
|
%files workstation-servers
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root,-)
|
||||||
%docdir %{krb5prefix}/man
|
%docdir %{krb5prefix}/man
|
||||||
|
|
||||||
|
%config(noreplace) /etc/profile.d/krb5-workstation-servers.sh
|
||||||
|
%config(noreplace) /etc/profile.d/krb5-workstation-servers.csh
|
||||||
|
|
||||||
%dir %{krb5prefix}
|
%dir %{krb5prefix}
|
||||||
%dir %{krb5prefix}/bin
|
%dir %{krb5prefix}/bin
|
||||||
%dir %{krb5prefix}/man
|
%dir %{krb5prefix}/man
|
||||||
@ -658,10 +690,6 @@ exit 0
|
|||||||
%dir %{krb5prefix}/man/man8
|
%dir %{krb5prefix}/man/man8
|
||||||
%dir %{krb5prefix}/sbin
|
%dir %{krb5prefix}/sbin
|
||||||
|
|
||||||
# Problem-reporting tool.
|
|
||||||
%{krb5prefix}/sbin/krb5-send-pr
|
|
||||||
%{krb5prefix}/man/man1/krb5-send-pr.1*
|
|
||||||
|
|
||||||
# Used by both clients and servers.
|
# Used by both clients and servers.
|
||||||
%{krb5prefix}/bin/rcp
|
%{krb5prefix}/bin/rcp
|
||||||
%{krb5prefix}/man/man1/rcp.1*
|
%{krb5prefix}/man/man1/rcp.1*
|
||||||
@ -686,8 +714,8 @@ exit 0
|
|||||||
%{krb5prefix}/man/man8/telnetd.8*
|
%{krb5prefix}/man/man8/telnetd.8*
|
||||||
|
|
||||||
%files server
|
%files server
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root,-)
|
||||||
%docdir %{krb5prefix}/man
|
%docdir %{_mandir}
|
||||||
|
|
||||||
/etc/rc.d/init.d/krb5kdc
|
/etc/rc.d/init.d/krb5kdc
|
||||||
/etc/rc.d/init.d/kadmin
|
/etc/rc.d/init.d/kadmin
|
||||||
@ -700,6 +728,8 @@ exit 0
|
|||||||
|
|
||||||
%doc doc/admin*.ps.gz
|
%doc doc/admin*.ps.gz
|
||||||
%doc doc/install*.ps.gz
|
%doc doc/install*.ps.gz
|
||||||
|
%doc doc/krb5-admin.html
|
||||||
|
%doc doc/krb5-install.html
|
||||||
|
|
||||||
%{_infodir}/krb5-admin.info*
|
%{_infodir}/krb5-admin.info*
|
||||||
%{_infodir}/krb5-install.info*
|
%{_infodir}/krb5-install.info*
|
||||||
@ -709,82 +739,72 @@ exit 0
|
|||||||
%config(noreplace) %{_var}/kerberos/krb5kdc/kdc.conf
|
%config(noreplace) %{_var}/kerberos/krb5kdc/kdc.conf
|
||||||
%config(noreplace) %{_var}/kerberos/krb5kdc/kadm5.acl
|
%config(noreplace) %{_var}/kerberos/krb5kdc/kadm5.acl
|
||||||
|
|
||||||
%dir %{krb5prefix}
|
|
||||||
%dir %{krb5prefix}/bin
|
|
||||||
%dir %{_libdir}/krb5
|
%dir %{_libdir}/krb5
|
||||||
%dir %{_libdir}/krb5/plugins
|
%dir %{_libdir}/krb5/plugins
|
||||||
%dir %{_libdir}/krb5/plugins/kdb
|
%dir %{_libdir}/krb5/plugins/kdb
|
||||||
%dir %{_libdir}/krb5/plugins/preauth
|
%dir %{_libdir}/krb5/plugins/preauth
|
||||||
%dir %{_libdir}/krb5/plugins/authdata
|
%dir %{_libdir}/krb5/plugins/authdata
|
||||||
%dir %{krb5prefix}/man
|
|
||||||
%dir %{krb5prefix}/man/man1
|
|
||||||
%dir %{krb5prefix}/man/man5
|
|
||||||
%dir %{krb5prefix}/man/man8
|
|
||||||
%dir %{krb5prefix}/sbin
|
|
||||||
|
|
||||||
# Problem-reporting tool.
|
# Problem-reporting tool.
|
||||||
%{krb5prefix}/sbin/krb5-send-pr
|
%{_sbindir}/krb5-send-pr
|
||||||
%{krb5prefix}/man/man1/krb5-send-pr.1*
|
%dir %{_datadir}/gnats
|
||||||
|
%{_datadir}/gnats/mit
|
||||||
|
%{_mandir}/man1/krb5-send-pr.1*
|
||||||
|
|
||||||
# KDC binaries.
|
# KDC binaries and configuration.
|
||||||
%{krb5prefix}/man/man5/kdc.conf.5*
|
%{_mandir}/man5/kdc.conf.5*
|
||||||
%{krb5prefix}/sbin/kadmin.local
|
%{_sbindir}/kadmin.local
|
||||||
%{krb5prefix}/man/man8/kadmin.local.8*
|
%{_mandir}/man8/kadmin.local.8*
|
||||||
%{krb5prefix}/sbin/kadmind
|
%{_sbindir}/kadmind
|
||||||
%{krb5prefix}/man/man8/kadmind.8*
|
%{_mandir}/man8/kadmind.8*
|
||||||
%{krb5prefix}/sbin/kdb5_util
|
%{_sbindir}/kdb5_util
|
||||||
%{krb5prefix}/man/man8/kdb5_util.8*
|
%{_mandir}/man8/kdb5_util.8*
|
||||||
%{krb5prefix}/sbin/kprop
|
%{_sbindir}/kprop
|
||||||
%{krb5prefix}/man/man8/kprop.8*
|
%{_mandir}/man8/kprop.8*
|
||||||
%{krb5prefix}/sbin/kpropd
|
%{_sbindir}/kpropd
|
||||||
%{krb5prefix}/man/man8/kpropd.8*
|
%{_mandir}/man8/kpropd.8*
|
||||||
%{krb5prefix}/sbin/kproplog
|
%{_sbindir}/kproplog
|
||||||
%{krb5prefix}/man/man8/kproplog.8*
|
%{_mandir}/man8/kproplog.8*
|
||||||
%{krb5prefix}/sbin/krb5kdc
|
%{_sbindir}/krb5kdc
|
||||||
%{krb5prefix}/man/man8/krb5kdc.8*
|
%{_mandir}/man8/krb5kdc.8*
|
||||||
|
|
||||||
# This is here for people who want to test their server, and also
|
# This is here for people who want to test their server, and also
|
||||||
# included in devel package for similar reasons.
|
# included in devel package for similar reasons.
|
||||||
%{krb5prefix}/bin/sclient
|
%{_bindir}/sclient
|
||||||
%{krb5prefix}/man/man1/sclient.1*
|
%{_mandir}/man1/sclient.1*
|
||||||
%{krb5prefix}/sbin/sserver
|
%{_sbindir}/sserver
|
||||||
%{krb5prefix}/man/man8/sserver.8*
|
%{_mandir}/man8/sserver.8*
|
||||||
|
|
||||||
%if %{WITH_LDAP}
|
%if %{WITH_LDAP}
|
||||||
%files server-ldap
|
%files server-ldap
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root,-)
|
||||||
%docdir %{krb5prefix}/man
|
%docdir %{_mandir}
|
||||||
%doc src/plugins/kdb/ldap/libkdb_ldap/kerberos.ldif
|
%doc src/plugins/kdb/ldap/libkdb_ldap/kerberos.ldif
|
||||||
%doc src/plugins/kdb/ldap/libkdb_ldap/kerberos.schema
|
%doc src/plugins/kdb/ldap/libkdb_ldap/kerberos.schema
|
||||||
%doc 60kerberos.ldif
|
%doc 60kerberos.ldif
|
||||||
%dir %{_libdir}/krb5
|
%dir %{_libdir}/krb5
|
||||||
%dir %{_libdir}/krb5/plugins
|
%dir %{_libdir}/krb5/plugins
|
||||||
%dir %{_libdir}/krb5/plugins/kdb
|
%dir %{_libdir}/krb5/plugins/kdb
|
||||||
%dir %{krb5prefix}
|
|
||||||
%dir %{krb5prefix}/man
|
|
||||||
%dir %{krb5prefix}/man/man8
|
|
||||||
%dir %{krb5prefix}/sbin
|
|
||||||
%{_libdir}/krb5/plugins/kdb/kldap.so
|
%{_libdir}/krb5/plugins/kdb/kldap.so
|
||||||
%{_libdir}/libkdb_ldap.so
|
%{_libdir}/libkdb_ldap.so
|
||||||
%{_libdir}/libkdb_ldap.so.*
|
%{_libdir}/libkdb_ldap.so.*
|
||||||
%{krb5prefix}/man/man8/kdb5_ldap_util.8.gz
|
%{_mandir}/man8/kdb5_ldap_util.8.gz
|
||||||
%{krb5prefix}/sbin/kdb5_ldap_util
|
%{_sbindir}/kdb5_ldap_util
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files libs
|
%files libs
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root,-)
|
||||||
%doc README LICENSE
|
%doc README NOTICE LICENSE
|
||||||
%docdir %{krb5prefix}/man
|
%docdir %{_mandir}
|
||||||
%verify(not md5 size mtime) %config(noreplace) /etc/krb5.conf
|
%verify(not md5 size mtime) %config(noreplace) /etc/krb5.conf
|
||||||
/%{_mandir}/man1/tmac.doc*
|
|
||||||
/%{_mandir}/man1/kerberos.1*
|
/%{_mandir}/man1/kerberos.1*
|
||||||
/%{_mandir}/man5/.k5login.5*
|
/%{_mandir}/man5/.k5login.5*
|
||||||
/%{_mandir}/man5/krb5.conf.5*
|
/%{_mandir}/man5/krb5.conf.5*
|
||||||
/%{_lib}/libgssapi_krb5.so.*
|
/%{_lib}/libgssapi_krb5.so.*
|
||||||
/%{_lib}/libgssrpc.so.*
|
/%{_lib}/libgssrpc.so.*
|
||||||
/%{_lib}/libk5crypto.so.*
|
/%{_lib}/libk5crypto.so.*
|
||||||
%{_libdir}/libkadm5clnt.so.*
|
%{_libdir}/libkadm5clnt_mit.so.*
|
||||||
%{_libdir}/libkadm5srv.so.*
|
%{_libdir}/libkadm5srv_mit.so.*
|
||||||
%{_libdir}/libkdb5.so.*
|
%{_libdir}/libkdb5.so.*
|
||||||
/%{_lib}/libkrb5.so.*
|
/%{_lib}/libkrb5.so.*
|
||||||
/%{_lib}/libkrb5support.so.*
|
/%{_lib}/libkrb5support.so.*
|
||||||
@ -797,7 +817,7 @@ exit 0
|
|||||||
|
|
||||||
%if %{WITH_OPENSSL}
|
%if %{WITH_OPENSSL}
|
||||||
%files pkinit-openssl
|
%files pkinit-openssl
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root,-)
|
||||||
%dir %{_libdir}/krb5
|
%dir %{_libdir}/krb5
|
||||||
%dir %{_libdir}/krb5/plugins
|
%dir %{_libdir}/krb5/plugins
|
||||||
%dir %{_libdir}/krb5/plugins/preauth
|
%dir %{_libdir}/krb5/plugins/preauth
|
||||||
@ -805,55 +825,58 @@ exit 0
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root,-)
|
||||||
|
%docdir %{_mandir}
|
||||||
%config(noreplace) /etc/profile.d/krb5-devel.sh
|
|
||||||
%config(noreplace) /etc/profile.d/krb5-devel.csh
|
|
||||||
|
|
||||||
%docdir %{krb5prefix}/man
|
|
||||||
%doc doc/api/*.pdf
|
%doc doc/api/*.pdf
|
||||||
|
%doc doc/ccapi
|
||||||
%doc doc/implement/*.pdf
|
%doc doc/implement/*.pdf
|
||||||
%doc doc/kadm5/*.pdf
|
%doc doc/kadm5/*.pdf
|
||||||
%doc doc/kadmin
|
%doc doc/kadmin
|
||||||
|
%doc doc/kim
|
||||||
%doc doc/krb5-protocol
|
%doc doc/krb5-protocol
|
||||||
%doc doc/rpc
|
%doc doc/rpc
|
||||||
%doc doc/threads.txt
|
%doc doc/threads.txt
|
||||||
|
|
||||||
%dir %{krb5prefix}
|
|
||||||
%dir %{krb5prefix}/bin
|
|
||||||
%dir %{krb5prefix}/man
|
|
||||||
%dir %{krb5prefix}/man/man1
|
|
||||||
%dir %{krb5prefix}/man/man8
|
|
||||||
%dir %{krb5prefix}/sbin
|
|
||||||
|
|
||||||
%{_includedir}/*
|
%{_includedir}/*
|
||||||
%{_libdir}/libgssapi_krb5.so
|
%{_libdir}/libgssapi_krb5.so
|
||||||
%{_libdir}/libgssrpc.so
|
%{_libdir}/libgssrpc.so
|
||||||
%{_libdir}/libk5crypto.so
|
%{_libdir}/libk5crypto.so
|
||||||
%{_libdir}/libkadm5clnt.so
|
%{_libdir}/libkadm5clnt.so
|
||||||
|
%{_libdir}/libkadm5clnt_mit.so
|
||||||
%{_libdir}/libkadm5srv.so
|
%{_libdir}/libkadm5srv.so
|
||||||
|
%{_libdir}/libkadm5srv_mit.so
|
||||||
%{_libdir}/libkdb5.so
|
%{_libdir}/libkdb5.so
|
||||||
%{_libdir}/libkrb5.so
|
%{_libdir}/libkrb5.so
|
||||||
%{_libdir}/libkrb5support.so
|
%{_libdir}/libkrb5support.so
|
||||||
|
|
||||||
%{krb5prefix}/bin/krb5-config
|
%{_bindir}/krb5-config
|
||||||
%{krb5prefix}/bin/sclient
|
%{_bindir}/sclient
|
||||||
%{krb5prefix}/man/man1/krb5-config.1*
|
%{_mandir}/man1/krb5-config.1*
|
||||||
%{krb5prefix}/man/man1/sclient.1*
|
%{_mandir}/man1/sclient.1*
|
||||||
%{krb5prefix}/man/man8/sserver.8*
|
%{_mandir}/man8/sserver.8*
|
||||||
%{krb5prefix}/sbin/sserver
|
%{_sbindir}/sserver
|
||||||
|
|
||||||
# Protocol test clients.
|
# Protocol test clients.
|
||||||
%{krb5prefix}/bin/sim_client
|
%{_bindir}/sim_client
|
||||||
%{krb5prefix}/bin/gss-client
|
%{_bindir}/gss-client
|
||||||
%{krb5prefix}/bin/uuclient
|
%{_bindir}/uuclient
|
||||||
|
|
||||||
# Protocol test servers.
|
# Protocol test servers.
|
||||||
%{krb5prefix}/sbin/sim_server
|
%{_sbindir}/sim_server
|
||||||
%{krb5prefix}/sbin/gss-server
|
%{_sbindir}/gss-server
|
||||||
%{krb5prefix}/sbin/uuserver
|
%{_sbindir}/uuserver
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Mar 5 2010 Nalin Dahyabhai <nalin@redhat.com> - 1.8-1
|
||||||
|
- update to 1.8
|
||||||
|
- temporarily bundling the krb5-appl package (split upstream as of 1.8)
|
||||||
|
until its package review is complete
|
||||||
|
- profile.d scriptlets are now only needed by -workstation-clients
|
||||||
|
- adjust paths in init scripts
|
||||||
|
- drop upstreamed fix for KDC denial of service (CVE-2010-0283)
|
||||||
|
- drop patch to check the user's password correctly using crypt(), which
|
||||||
|
isn't a code path we hit when we're using PAM
|
||||||
|
|
||||||
* Wed Mar 3 2010 Nalin Dahyabhai <nalin@redhat.com> - 1.7.1-6
|
* Wed Mar 3 2010 Nalin Dahyabhai <nalin@redhat.com> - 1.7.1-6
|
||||||
- fix a null pointer dereference and crash introduced in our PAM patch that
|
- fix a null pointer dereference and crash introduced in our PAM patch that
|
||||||
would happen if ftpd was given the name of a user who wasn't known to the
|
would happen if ftpd was given the name of a user who wasn't known to the
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
RETVAL=0
|
RETVAL=0
|
||||||
prog="Kerberos 5 KDC"
|
prog="Kerberos 5 KDC"
|
||||||
krb5kdc=/usr/kerberos/sbin/krb5kdc
|
krb5kdc=/usr/sbin/krb5kdc
|
||||||
|
|
||||||
# Shell functions to cut down on useless shell instances.
|
# Shell functions to cut down on useless shell instances.
|
||||||
start() {
|
start() {
|
||||||
|
8
sources
8
sources
@ -1,3 +1,5 @@
|
|||||||
9d79efba57423008e65efc5ff75405d6 krb5-1.7.1.tar.gz
|
a3391a739009efa9734db720d34f4c07 krb5-1.8.tar.gz
|
||||||
2197cc65ed90f00f92e5a27bd514b53b krb5-1.7.1.tar.gz.asc
|
f923ec08f24df9e5a284be74895a6daa krb5-1.8.tar.gz.asc
|
||||||
309139729539cf5ef403bb0dc7ae455b krb5-1.7.1-pdf.tar.gz
|
4ecf03dad0df7f2ded49f0cfd9786157 krb5-appl-1.0.tar.gz
|
||||||
|
33056e617e2cbad7c8e8b732aa0fdd91 krb5-appl-1.0.tar.gz.asc
|
||||||
|
32f8238d4553c44ecdc41205c3cb0333 krb5-1.8-pdf.tar.gz
|
||||||
|
Loading…
Reference in New Issue
Block a user