- 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.asc
|
||||
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.
|
||||
. /etc/init.d/functions
|
||||
prog="Kerberos 5 Admin Server"
|
||||
kadmind=/usr/kerberos/sbin/kadmind
|
||||
kadmind=/usr/sbin/kadmind
|
||||
|
||||
RETVAL=0
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
RETVAL=0
|
||||
prog="Kerberos 5 Propagation Server"
|
||||
kpropd=/usr/kerberos/sbin/kpropd
|
||||
kpropd=/usr/sbin/kpropd
|
||||
|
||||
# Shell functions to cut down on useless shell instances.
|
||||
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
|
||||
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
|
||||
--- krb5-1.7/src/lib/krb5/krb/princ_comp.c 2009-01-03 18:19:42.000000000 -0500
|
||||
+++ krb5-1.7/src/lib/krb5/krb/princ_comp.c 2009-06-04 14:31:26.000000000 -0400
|
||||
@@ -40,6 +40,12 @@ realm_compare_flags(krb5_context context
|
||||
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.8/src/lib/krb5/krb/princ_comp.c.api 2009-10-30 20:48:38.000000000 -0400
|
||||
+++ krb5-1.8/src/lib/krb5/krb/princ_comp.c 2010-03-05 11:00:55.000000000 -0500
|
||||
@@ -41,6 +41,12 @@ realm_compare_flags(krb5_context context
|
||||
const krb5_data *realm1 = krb5_princ_realm(context, princ1);
|
||||
const krb5_data *realm2 = krb5_princ_realm(context, princ2);
|
||||
|
||||
+ if ((princ1 == NULL) || (princ2 == NULL))
|
||||
+ return FALSE;
|
||||
+ return FALSE;
|
||||
+
|
||||
+ if ((realm1 == NULL) || (realm2 == NULL))
|
||||
+ return FALSE;
|
||||
+ return FALSE;
|
||||
+
|
||||
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_boolean ret = FALSE;
|
||||
|
||||
+ if ((princ1 == NULL) || (princ2 == NULL))
|
||||
+ return FALSE;
|
||||
+ return FALSE;
|
||||
+
|
||||
if (flags & KRB5_PRINCIPAL_COMPARE_ENTERPRISE) {
|
||||
/* Treat UPNs as if they were real principals */
|
||||
if (krb5_princ_type(context, princ1) == KRB5_NT_ENTERPRISE_PRINCIPAL) {
|
||||
/* Treat UPNs as if they were real principals */
|
||||
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
|
||||
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
|
||||
@@ -371,7 +371,14 @@ process_as_req(krb5_kdc_req *request, kr
|
||||
goto errout;
|
||||
|
||||
diff -up krb5-1.8/src/kdc/do_as_req.c.key_exp krb5-1.8/src/kdc/do_as_req.c
|
||||
--- krb5-1.8/src/kdc/do_as_req.c.key_exp 2010-02-16 17:21:08.000000000 -0500
|
||||
+++ 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.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
|
||||
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. RT#6525
|
||||
configure scripts should be rebuilt. Originally RT#6525
|
||||
|
||||
Index: configure.in
|
||||
===================================================================
|
||||
--- configure.in (revision 22425)
|
||||
+++ configure.in (working copy)
|
||||
@@ -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 @@
|
||||
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
|
||||
+++ krb5-1.8/src/aclocal.m4 2010-03-05 10:55:29.000000000 -0500
|
||||
@@ -1770,3 +1770,24 @@ AC_SUBST(PAM_LIBS)
|
||||
AC_SUBST(PAM_MAN)
|
||||
AC_SUBST(NON_PAM_MAN)
|
||||
])dnl
|
||||
@ -96,11 +31,10 @@ Index: aclocal.m4
|
||||
+AC_SUBST(manlibexecdir)
|
||||
+AC_CONFIG_FILES($1)
|
||||
+])
|
||||
Index: appl/sample/sserver/sserver.M
|
||||
===================================================================
|
||||
--- appl/sample/sserver/sserver.M (revision 22425)
|
||||
+++ appl/sample/sserver/sserver.M (working copy)
|
||||
@@ -59,7 +59,7 @@
|
||||
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
|
||||
+++ krb5-1.8/src/appl/sample/sserver/sserver.M 2010-03-05 10:55:29.000000000 -0500
|
||||
@@ -59,7 +59,7 @@ option allows for a different keytab tha
|
||||
using a line in
|
||||
/etc/inetd.conf that looks like this:
|
||||
.PP
|
||||
@ -109,97 +43,10 @@ Index: appl/sample/sserver/sserver.M
|
||||
.PP
|
||||
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:
|
||||
Index: appl/bsd/klogind.M
|
||||
===================================================================
|
||||
--- appl/bsd/klogind.M (revision 22425)
|
||||
+++ appl/bsd/klogind.M (working copy)
|
||||
@@ -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 @@
|
||||
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
|
||||
+++ krb5-1.8/src/config-files/kdc.conf.M 2010-03-05 10:55:29.000000000 -0500
|
||||
@@ -82,14 +82,14 @@ This
|
||||
.B string
|
||||
specifies the location of the access control list (acl) file that
|
||||
kadmin uses to determine which principals are allowed which permissions
|
||||
@ -216,7 +63,7 @@ Index: config-files/kdc.conf.M
|
||||
|
||||
.IP database_name
|
||||
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
|
||||
|
||||
.SH FILES
|
||||
@ -225,11 +72,10 @@ Index: config-files/kdc.conf.M
|
||||
|
||||
.SH SEE ALSO
|
||||
krb5.conf(5), krb5kdc(8)
|
||||
Index: config-files/krb5.conf.M
|
||||
===================================================================
|
||||
--- config-files/krb5.conf.M (revision 22425)
|
||||
+++ config-files/krb5.conf.M (working copy)
|
||||
@@ -643,6 +643,6 @@
|
||||
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
|
||||
+++ krb5-1.8/src/config-files/krb5.conf.M 2010-03-05 10:55:29.000000000 -0500
|
||||
@@ -651,6 +651,6 @@ is whitespace-separated. The LDAP server
|
||||
This LDAP specific tag indicates the number of connections to be maintained per
|
||||
LDAP server.
|
||||
.SH FILES
|
||||
@ -237,42 +83,63 @@ Index: config-files/krb5.conf.M
|
||||
+@mansysconfdir@/krb5.conf
|
||||
.SH SEE ALSO
|
||||
syslog(3)
|
||||
Index: slave/kprop.M
|
||||
===================================================================
|
||||
--- slave/kprop.M (revision 22425)
|
||||
+++ slave/kprop.M (working copy)
|
||||
@@ -39,7 +39,7 @@
|
||||
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
|
||||
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
|
||||
+++ krb5-1.8/src/configure.in 2010-03-05 10:55:29.000000000 -0500
|
||||
@@ -1054,6 +1054,16 @@ fi
|
||||
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
|
||||
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
|
||||
\fB\-r\fP \fIrealm\fP
|
||||
@@ -51,7 +51,7 @@
|
||||
\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
|
||||
Index: slave/kpropd.M
|
||||
===================================================================
|
||||
--- slave/kpropd.M (revision 22425)
|
||||
+++ slave/kpropd.M (working copy)
|
||||
@@ -74,7 +74,7 @@
|
||||
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
|
||||
@@ -913,7 +913,7 @@ passwords.
|
||||
.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),
|
||||
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:
|
||||
|
||||
-kprop stream tcp nowait root /usr/local/sbin/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
|
||||
@@ -111,13 +111,13 @@
|
||||
@@ -111,13 +111,13 @@ is used.
|
||||
\fB\-f\fP \fIfile\fP
|
||||
specifies the filename where the dumped principal database file is to be
|
||||
stored; by default the dumped database file is KPROPD_DEFAULT_FILE
|
||||
@ -288,7 +155,7 @@ Index: slave/kpropd.M
|
||||
.TP
|
||||
.B \-S
|
||||
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
|
||||
kpropd.acl
|
||||
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
|
||||
local machine will allow Kerberos database propagation via kprop.
|
||||
.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(),
|
||||
which we used earlier, is some improvement.
|
||||
|
||||
diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
||||
--- krb5-1.7/src/aclocal.m4 2009-06-04 13:47:20.000000000 -0400
|
||||
+++ krb5-1.7/src/aclocal.m4 2009-06-04 13:47:20.000000000 -0400
|
||||
diff -up krb5-1.8/src/aclocal.m4.selinux-label krb5-1.8/src/aclocal.m4
|
||||
--- krb5-1.8/src/aclocal.m4.selinux-label 2010-03-05 10:57:23.000000000 -0500
|
||||
+++ krb5-1.8/src/aclocal.m4 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -103,6 +103,7 @@ AC_SUBST_FILE(libnodeps_frag)
|
||||
dnl
|
||||
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_AC_INITFINI
|
||||
KRB5_AC_ENABLE_THREADS
|
||||
@@ -1876,3 +1877,53 @@ AC_SUBST(PAM_LIBS)
|
||||
@@ -1791,3 +1792,53 @@ AC_SUBST(manlocalstatedir)
|
||||
AC_SUBST(manlibexecdir)
|
||||
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"
|
||||
+AC_SUBST(SELINUX_LIBS)
|
||||
+])dnl
|
||||
diff -up krb5-1.7/src/appl/bsd/configure.in krb5-1.7/src/appl/bsd/configure.in
|
||||
--- krb5-1.7/src/appl/bsd/configure.in 2009-06-04 13:47:20.000000000 -0400
|
||||
+++ krb5-1.7/src/appl/bsd/configure.in 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -25,6 +25,7 @@ AC_CHECK_LIB(odm,main,
|
||||
LOGINLIBS="$LOGINLIBS -lodm -ls -lcfg"
|
||||
)))
|
||||
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
|
||||
diff -up krb5-1.8/src/config/pre.in.selinux-label krb5-1.8/src/config/pre.in
|
||||
--- krb5-1.8/src/config/pre.in.selinux-label 2010-03-05 10:57:23.000000000 -0500
|
||||
+++ krb5-1.8/src/config/pre.in 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -180,6 +180,7 @@ LD_UNRESOLVED_PREFIX = @LD_UNRESOLVED_PREFIX@
|
||||
LD_SHLIBDIR_PREFIX = @LD_SHLIBDIR_PREFIX@
|
||||
LDARGS = @LDARGS@
|
||||
LIBS = @LIBS@
|
||||
PAM_LIBS = @PAM_LIBS@
|
||||
+SELINUX_LIBS=@SELINUX_LIBS@
|
||||
|
||||
INSTALL=@INSTALL@
|
||||
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 = @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)
|
||||
GSS_LIBS = $(GSS_KRB5_LIB)
|
||||
# needs fixing if ever used on Mac OS X!
|
||||
diff -up krb5-1.7/src/configure.in krb5-1.7/src/configure.in
|
||||
--- krb5-1.7/src/configure.in 2009-06-04 13:47:20.000000000 -0400
|
||||
+++ krb5-1.7/src/configure.in 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -1042,6 +1042,8 @@ AC_CONFIG_SUBDIRS(appl/libpty appl/bsd a
|
||||
diff -up krb5-1.8/src/configure.in.selinux-label krb5-1.8/src/configure.in
|
||||
--- krb5-1.8/src/configure.in.selinux-label 2010-03-05 10:57:23.000000000 -0500
|
||||
+++ krb5-1.8/src/configure.in 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -1053,6 +1053,8 @@ fi
|
||||
|
||||
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])
|
||||
|
||||
V5_AC_OUTPUT_MANPAGE([
|
||||
diff -up krb5-1.7/src/include/autoconf.h.in krb5-1.7/src/include/autoconf.h.in
|
||||
--- krb5-1.7/src/include/autoconf.h.in 2009-06-01 20:58:35.000000000 -0400
|
||||
+++ krb5-1.7/src/include/autoconf.h.in 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -389,6 +389,12 @@
|
||||
/* 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;
|
||||
diff -up krb5-1.8/src/include/k5-int.h.selinux-label krb5-1.8/src/include/k5-int.h
|
||||
--- krb5-1.8/src/include/k5-int.h.selinux-label 2010-01-04 14:59:16.000000000 -0500
|
||||
+++ krb5-1.8/src/include/k5-int.h 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -133,6 +133,7 @@ typedef unsigned char u_char;
|
||||
typedef UINT64_TYPE krb5_ui_8;
|
||||
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_STRING2 "Re-enter password for verification"
|
||||
diff -up /dev/null krb5-1.7/src/include/k5-label.h
|
||||
--- /dev/null 2009-06-04 10:34:55.169007373 -0400
|
||||
+++ krb5-1.7/src/include/k5-label.h 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -0,0 +1,27 @@
|
||||
diff -up krb5-1.8/src/include/k5-label.h.selinux-label krb5-1.8/src/include/k5-label.h
|
||||
--- krb5-1.8/src/include/k5-label.h.selinux-label 2010-03-05 10:57:23.000000000 -0500
|
||||
+++ krb5-1.8/src/include/k5-label.h 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -0,0 +1,30 @@
|
||||
+#ifndef _KRB5_LABEL_H
|
||||
+#define _KRB5_LABEL_H
|
||||
+
|
||||
+#ifdef THREEPARAMOPEN
|
||||
+#undef THREEPARAMOPEN
|
||||
+#endif
|
||||
+#ifdef WRITABLEFOPEN
|
||||
+#undef WRITABLEFOPEN
|
||||
+#endif
|
||||
+
|
||||
+/* Wrapper functions which help us create files and directories with the right
|
||||
+ * 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)
|
||||
+#endif
|
||||
+#endif
|
||||
diff -up krb5-1.7/src/include/krb5/krb5.hin krb5-1.7/src/include/krb5/krb5.hin
|
||||
--- krb5-1.7/src/include/krb5/krb5.hin 2009-04-15 16:07:03.000000000 -0400
|
||||
+++ krb5-1.7/src/include/krb5/krb5.hin 2009-06-04 13:47:20.000000000 -0400
|
||||
diff -up krb5-1.8/src/include/krb5/krb5.hin.selinux-label krb5-1.8/src/include/krb5/krb5.hin
|
||||
--- krb5-1.8/src/include/krb5/krb5.hin.selinux-label 2010-01-21 17:49:07.000000000 -0500
|
||||
+++ krb5-1.8/src/include/krb5/krb5.hin 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -87,6 +87,12 @@
|
||||
#define THREEPARAMOPEN(x,y,z) open(x,y,z)
|
||||
#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
|
||||
|
||||
#include <stdlib.h>
|
||||
diff -up krb5-1.7/src/kadmin/dbutil/dump.c krb5-1.7/src/kadmin/dbutil/dump.c
|
||||
--- krb5-1.7/src/kadmin/dbutil/dump.c 2009-01-30 18:55:14.000000000 -0500
|
||||
+++ krb5-1.7/src/kadmin/dbutil/dump.c 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -1219,7 +1219,7 @@ dump_db(argc, argv)
|
||||
* want to get into.
|
||||
*/
|
||||
unlink(ofile);
|
||||
- if (!(f = fopen(ofile, "w"))) {
|
||||
+ if (!(f = WRITABLEFOPEN(ofile, "w"))) {
|
||||
fprintf(stderr, ofopen_error,
|
||||
progname, ofile, error_message(errno));
|
||||
exit_status++;
|
||||
diff -up krb5-1.7/src/krb5-config.in krb5-1.7/src/krb5-config.in
|
||||
--- krb5-1.7/src/krb5-config.in 2008-12-18 13:31:16.000000000 -0500
|
||||
+++ krb5-1.7/src/krb5-config.in 2009-06-04 13:47:20.000000000 -0400
|
||||
diff -up krb5-1.8/src/kadmin/dbutil/dump.c.selinux-label krb5-1.8/src/kadmin/dbutil/dump.c
|
||||
--- krb5-1.8/src/kadmin/dbutil/dump.c.selinux-label 2009-10-30 20:48:38.000000000 -0400
|
||||
+++ krb5-1.8/src/kadmin/dbutil/dump.c 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -1274,7 +1274,7 @@ dump_db(argc, argv)
|
||||
* want to get into.
|
||||
*/
|
||||
unlink(ofile);
|
||||
- if (!(f = fopen(ofile, "w"))) {
|
||||
+ if (!(f = WRITABLEFOPEN(ofile, "w"))) {
|
||||
fprintf(stderr, ofopen_error,
|
||||
progname, ofile, error_message(errno));
|
||||
exit_status++;
|
||||
diff -up krb5-1.8/src/krb5-config.in.selinux-label krb5-1.8/src/krb5-config.in
|
||||
--- krb5-1.8/src/krb5-config.in.selinux-label 2010-01-21 17:49:01.000000000 -0500
|
||||
+++ krb5-1.8/src/krb5-config.in 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -38,6 +38,7 @@ RPATH_FLAG='@RPATH_FLAG@'
|
||||
PROG_RPATH_FLAGS='@PROG_RPATH_FLAGS@'
|
||||
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
|
||||
|
||||
echo $lib_flags
|
||||
diff -up krb5-1.7/src/lib/kadm5/logger.c krb5-1.7/src/lib/kadm5/logger.c
|
||||
--- krb5-1.7/src/lib/kadm5/logger.c 2008-12-29 18:01:15.000000000 -0500
|
||||
+++ krb5-1.7/src/lib/kadm5/logger.c 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -421,7 +421,7 @@ krb5_klog_init(krb5_context kcontext, ch
|
||||
* Check for append/overwrite, then open the file.
|
||||
*/
|
||||
if (cp[4] == ':' || cp[4] == '=') {
|
||||
- f = fopen(&cp[5], (cp[4] == ':') ? "a" : "w");
|
||||
+ f = WRITABLEFOPEN(&cp[5], (cp[4] == ':') ? "a" : "w");
|
||||
if (f) {
|
||||
set_cloexec_file(f);
|
||||
log_control.log_entries[i].lfu_filep = f;
|
||||
@@ -954,7 +954,7 @@ krb5_klog_reopen(krb5_context kcontext)
|
||||
* In case the old logfile did not get moved out of the
|
||||
* way, open for append to prevent squashing the old logs.
|
||||
*/
|
||||
- f = fopen(log_control.log_entries[lindex].lfu_fname, "a+");
|
||||
+ f = WRITABLEFOPEN(log_control.log_entries[lindex].lfu_fname, "a+");
|
||||
if (f) {
|
||||
set_cloexec_file(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
|
||||
--- krb5-1.7/src/lib/krb5/keytab/kt_file.c 2009-05-11 16:55:22.000000000 -0400
|
||||
+++ krb5-1.7/src/lib/krb5/keytab/kt_file.c 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -1094,7 +1094,7 @@ krb5_ktfileint_open(krb5_context context
|
||||
diff -up krb5-1.8/src/lib/kadm5/logger.c.selinux-label krb5-1.8/src/lib/kadm5/logger.c
|
||||
--- krb5-1.8/src/lib/kadm5/logger.c.selinux-label 2009-12-28 21:42:51.000000000 -0500
|
||||
+++ krb5-1.8/src/lib/kadm5/logger.c 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -425,7 +425,7 @@ krb5_klog_init(krb5_context kcontext, ch
|
||||
* Check for append/overwrite, then open the file.
|
||||
*/
|
||||
if (cp[4] == ':' || cp[4] == '=') {
|
||||
- f = fopen(&cp[5], (cp[4] == ':') ? "a" : "w");
|
||||
+ f = WRITABLEFOPEN(&cp[5], (cp[4] == ':') ? "a" : "w");
|
||||
if (f) {
|
||||
set_cloexec_file(f);
|
||||
log_control.log_entries[i].lfu_filep = f;
|
||||
@@ -961,7 +961,7 @@ krb5_klog_reopen(krb5_context kcontext)
|
||||
* In case the old logfile did not get moved out of the
|
||||
* way, open for append to prevent squashing the old logs.
|
||||
*/
|
||||
- f = fopen(log_control.log_entries[lindex].lfu_fname, "a+");
|
||||
+ f = WRITABLEFOPEN(log_control.log_entries[lindex].lfu_fname, "a+");
|
||||
if (f) {
|
||||
set_cloexec_file(f);
|
||||
log_control.log_entries[lindex].lfu_filep = f;
|
||||
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.8/src/lib/krb5/keytab/kt_file.c.selinux-label 2009-11-10 14:59:39.000000000 -0500
|
||||
+++ krb5-1.8/src/lib/krb5/keytab/kt_file.c 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -1050,7 +1050,7 @@ krb5_ktfileint_open(krb5_context context
|
||||
|
||||
KTCHECKLOCK(id);
|
||||
errno = 0;
|
||||
- KTFILEP(id) = fopen(KTFILENAME(id),
|
||||
+ KTFILEP(id) = WRITABLEFOPEN(KTFILENAME(id),
|
||||
(mode == KRB5_LOCKMODE_EXCLUSIVE) ?
|
||||
fopen_mode_rbplus : fopen_mode_rb);
|
||||
(mode == KRB5_LOCKMODE_EXCLUSIVE) ?
|
||||
fopen_mode_rbplus : fopen_mode_rb);
|
||||
if (!KTFILEP(id)) {
|
||||
@@ -1102,7 +1102,7 @@ krb5_ktfileint_open(krb5_context context
|
||||
/* try making it first time around */
|
||||
@@ -1058,7 +1058,7 @@ krb5_ktfileint_open(krb5_context context
|
||||
/* try making it first time around */
|
||||
krb5_create_secure_file(context, KTFILENAME(id));
|
||||
errno = 0;
|
||||
- KTFILEP(id) = fopen(KTFILENAME(id), fopen_mode_rbplus);
|
||||
+ KTFILEP(id) = WRITABLEFOPEN(KTFILENAME(id), fopen_mode_rbplus);
|
||||
if (!KTFILEP(id))
|
||||
goto report_errno;
|
||||
writevno = 1;
|
||||
diff -up krb5-1.7/src/plugins/kdb/db2/adb_openclose.c krb5-1.7/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.7/src/plugins/kdb/db2/adb_openclose.c 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -198,7 +198,7 @@ krb5_error_code osa_adb_init_db(osa_adb_
|
||||
* POSIX systems
|
||||
*/
|
||||
lockp->lockinfo.filename = strdup(lockfilename);
|
||||
- if ((lockp->lockinfo.lockfile = fopen(lockfilename, "r+")) == NULL) {
|
||||
+ if ((lockp->lockinfo.lockfile = WRITABLEFOPEN(lockfilename, "r+")) == NULL) {
|
||||
/*
|
||||
* maybe someone took away write permission so we could only
|
||||
* 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
|
||||
--- krb5-1.7/src/plugins/kdb/db2/kdb_db2.c 2009-01-30 20:07:04.000000000 -0500
|
||||
+++ krb5-1.7/src/plugins/kdb/db2/kdb_db2.c 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -327,8 +327,8 @@ krb5_db2_db_init(krb5_context context)
|
||||
errno = 0;
|
||||
- KTFILEP(id) = fopen(KTFILENAME(id), fopen_mode_rbplus);
|
||||
+ KTFILEP(id) = WRITABLEFOPEN(KTFILENAME(id), fopen_mode_rbplus);
|
||||
if (!KTFILEP(id))
|
||||
goto report_errno;
|
||||
writevno = 1;
|
||||
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.8/src/plugins/kdb/db2/adb_openclose.c.selinux-label 2009-11-24 18:52:25.000000000 -0500
|
||||
+++ krb5-1.8/src/plugins/kdb/db2/adb_openclose.c 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -201,7 +201,7 @@ osa_adb_init_db(osa_adb_db_t *dbp, char
|
||||
* POSIX systems
|
||||
*/
|
||||
lockp->lockinfo.filename = strdup(lockfilename);
|
||||
- if ((lockp->lockinfo.lockfile = fopen(lockfilename, "r+")) == NULL) {
|
||||
+ if ((lockp->lockinfo.lockfile = WRITABLEFOPEN(lockfilename, "r+")) == NULL) {
|
||||
/*
|
||||
* maybe someone took away write permission so we could only
|
||||
* get shared locks?
|
||||
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.8/src/plugins/kdb/db2/kdb_db2.c.selinux-label 2009-11-25 09:36:05.000000000 -0500
|
||||
+++ krb5-1.8/src/plugins/kdb/db2/kdb_db2.c 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -326,8 +326,8 @@ krb5_db2_db_init(krb5_context context)
|
||||
* should be opened read/write so that write locking can work with
|
||||
* POSIX systems
|
||||
*/
|
||||
- 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_RDONLY, 0666)) < 0) {
|
||||
retval = errno;
|
||||
goto err_out;
|
||||
}
|
||||
@@ -754,7 +754,7 @@ krb5_db2_db_create(krb5_context context,
|
||||
+ if ((db_ctx->db_lf_file = THREEPARAMOPEN(filename, O_RDONLY, 0666)) < 0) {
|
||||
retval = errno;
|
||||
goto err_out;
|
||||
}
|
||||
@@ -745,7 +745,7 @@ krb5_db2_db_create(krb5_context context,
|
||||
if (!okname)
|
||||
retval = ENOMEM;
|
||||
retval = ENOMEM;
|
||||
else {
|
||||
- fd = open(okname, O_CREAT | O_RDWR | O_TRUNC, 0600);
|
||||
+ fd = THREEPARAMOPEN(okname, O_CREAT | O_RDWR | O_TRUNC, 0600);
|
||||
if (fd < 0)
|
||||
retval = errno;
|
||||
else
|
||||
@@ -1795,7 +1795,7 @@ krb5_db2_db_rename(context, from, to)
|
||||
retval = ENOMEM;
|
||||
goto errout;
|
||||
- fd = open(okname, O_CREAT | O_RDWR | O_TRUNC, 0600);
|
||||
+ fd = THREEPARAMOPEN(okname, O_CREAT | O_RDWR | O_TRUNC, 0600);
|
||||
if (fd < 0)
|
||||
retval = errno;
|
||||
else
|
||||
@@ -1925,7 +1925,7 @@ krb5_db2_db_rename(context, from, to, me
|
||||
retval = ENOMEM;
|
||||
goto errout;
|
||||
}
|
||||
- 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);
|
||||
if (db_ctx->db_lf_file < 0) {
|
||||
retval = errno;
|
||||
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
|
||||
--- krb5-1.7/src/plugins/kdb/db2/libdb2/btree/bt_open.c 2007-10-22 15:18:53.000000000 -0400
|
||||
+++ krb5-1.7/src/plugins/kdb/db2/libdb2/btree/bt_open.c 2009-06-04 13:47:20.000000000 -0400
|
||||
retval = errno;
|
||||
goto errout;
|
||||
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.8/src/plugins/kdb/db2/libdb2/btree/bt_open.c.selinux-label 2009-10-30 20:48:38.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.
|
||||
|
||||
#include "k5-platform.h" /* mkstemp? */
|
||||
@ -394,9 +327,9 @@ diff -up krb5-1.7/src/plugins/kdb/db2/libdb2/btree/bt_open.c krb5-1.7/src/plugin
|
||||
goto err;
|
||||
|
||||
} 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
|
||||
--- krb5-1.7/src/plugins/kdb/db2/libdb2/hash/hash.c 2009-01-23 13:04:08.000000000 -0500
|
||||
+++ krb5-1.7/src/plugins/kdb/db2/libdb2/hash/hash.c 2009-06-04 13:47:20.000000000 -0400
|
||||
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.8/src/plugins/kdb/db2/libdb2/hash/hash.c.selinux-label 2009-10-30 20:48:38.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
|
||||
#include <assert.h>
|
||||
#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);
|
||||
(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
|
||||
--- krb5-1.7/src/plugins/kdb/db2/libdb2/recno/rec_open.c 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
|
||||
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.8/src/plugins/kdb/db2/libdb2/recno/rec_open.c.selinux-label 2007-10-22 15:18:53.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
|
||||
#include <stdio.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);
|
||||
|
||||
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
|
||||
--- krb5-1.7/src/plugins/kdb/db2/libdb2/test/Makefile.in 2008-08-25 19:08:16.000000000 -0400
|
||||
+++ krb5-1.7/src/plugins/kdb/db2/libdb2/test/Makefile.in 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -14,7 +14,8 @@ PROG_RPATH=$(KRB5_LIBDIR)
|
||||
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.8/src/plugins/kdb/db2/libdb2/test/Makefile.in.selinux-label 2009-11-22 13:13:29.000000000 -0500
|
||||
+++ krb5-1.8/src/plugins/kdb/db2/libdb2/test/Makefile.in 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -12,7 +12,8 @@ PROG_RPATH=$(KRB5_LIBDIR)
|
||||
|
||||
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)
|
||||
|
||||
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
|
||||
--- krb5-1.7/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c 2008-12-01 12:09:59.000000000 -0500
|
||||
+++ krb5-1.7/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -1096,7 +1096,7 @@ rem_service_entry_from_file(argc, argv,
|
||||
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.8/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c.selinux-label 2009-11-24 18:52:25.000000000 -0500
|
||||
+++ krb5-1.8/src/plugins/kdb/ldap/ldap_util/kdb5_ldap_services.c 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -1091,7 +1091,7 @@
|
||||
|
||||
/* Create a temporary file which contains all the entries except the
|
||||
entry for the given service dn */
|
||||
- pfile = fopen(file_name, "r+");
|
||||
+ pfile = WRITABLEFOPEN(file_name, "r+");
|
||||
if (pfile == NULL) {
|
||||
com_err(me, errno, "while deleting entry from file %s", file_name);
|
||||
goto cleanup;
|
||||
@@ -1113,7 +1113,7 @@ rem_service_entry_from_file(argc, argv,
|
||||
com_err(me, errno, "while deleting entry from file %s", file_name);
|
||||
goto cleanup;
|
||||
@@ -1108,7 +1108,7 @@
|
||||
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);
|
||||
umask(omask);
|
||||
if (tmpfd == -1) {
|
||||
com_err(me, errno, "while deleting entry from file\n");
|
||||
@@ -1767,7 +1767,7 @@ kdb5_ldap_set_service_password(argc, arg
|
||||
com_err(me, errno, "while deleting entry from file\n");
|
||||
@@ -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 */
|
||||
/* set password in the file */
|
||||
- pfile = fopen(file_name, "r+");
|
||||
+ pfile = WRITABLEFOPEN(file_name, "r+");
|
||||
if (pfile == NULL) {
|
||||
com_err(me, errno, "Failed to open file %s", file_name);
|
||||
goto cleanup;
|
||||
@@ -1808,7 +1808,7 @@ kdb5_ldap_set_service_password(argc, arg
|
||||
}
|
||||
com_err(me, errno, "Failed to open file %s", file_name);
|
||||
goto cleanup;
|
||||
@@ -1797,7 +1797,7 @@
|
||||
}
|
||||
|
||||
omask = umask(077);
|
||||
- newfile = fopen(tmp_file, "w+");
|
||||
+ newfile = WRITABLEFOPEN(tmp_file, "w+");
|
||||
umask(omask);
|
||||
if (newfile == NULL) {
|
||||
com_err(me, errno, "Error creating file %s", tmp_file);
|
||||
@@ -2032,7 +2032,7 @@ done:
|
||||
omask = umask(077);
|
||||
- newfile = fopen(tmp_file, "w+");
|
||||
+ newfile = WRITABLEFOPEN(tmp_file, "w+");
|
||||
umask(omask);
|
||||
if (newfile == NULL) {
|
||||
com_err(me, errno, "Error creating file %s", tmp_file);
|
||||
@@ -2019,7 +2019,7 @@
|
||||
|
||||
/* set password in the file */
|
||||
old_mode = umask(0177);
|
||||
- pfile = fopen(file_name, "a+");
|
||||
+ pfile = WRITABLEFOPEN(file_name, "a+");
|
||||
if (pfile == NULL) {
|
||||
com_err(me, errno, "Failed to open file %s: %s", file_name,
|
||||
strerror (errno));
|
||||
@@ -2082,7 +2082,7 @@ done:
|
||||
}
|
||||
com_err(me, errno, "Failed to open file %s: %s", file_name,
|
||||
strerror (errno));
|
||||
@@ -2069,7 +2069,7 @@
|
||||
}
|
||||
|
||||
omask = umask(077);
|
||||
- newfile = fopen(tmp_file, "w");
|
||||
+ newfile = WRITABLEFOPEN(tmp_file, "w");
|
||||
umask (omask);
|
||||
if (newfile == NULL) {
|
||||
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
|
||||
--- krb5-1.7/src/slave/kpropd.c 2008-12-30 00:45:06.000000000 -0500
|
||||
+++ krb5-1.7/src/slave/kpropd.c 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -346,7 +346,7 @@ retry:
|
||||
if (!debug && iproprole != IPROP_SLAVE)
|
||||
daemon(1, 0);
|
||||
omask = umask(077);
|
||||
- newfile = fopen(tmp_file, "w");
|
||||
+ newfile = WRITABLEFOPEN(tmp_file, "w");
|
||||
umask (omask);
|
||||
if (newfile == NULL) {
|
||||
com_err(me, errno, "Error creating file %s", tmp_file);
|
||||
diff -up krb5-1.8/src/slave/kpropd.c.selinux-label krb5-1.8/src/slave/kpropd.c
|
||||
--- krb5-1.8/src/slave/kpropd.c.selinux-label 2009-12-31 17:25:11.000000000 -0500
|
||||
+++ krb5-1.8/src/slave/kpropd.c 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -328,7 +328,7 @@ retry:
|
||||
if (!debug && iproprole != IPROP_SLAVE)
|
||||
daemon(1, 0);
|
||||
#ifdef PID_FILE
|
||||
- if ((pidfile = fopen(PID_FILE, "w")) != NULL) {
|
||||
+ if ((pidfile = WRITABLEFOPEN(PID_FILE, "w")) != NULL) {
|
||||
fprintf(pidfile, "%d\n", getpid());
|
||||
fclose(pidfile);
|
||||
} else
|
||||
diff -up krb5-1.7/src/util/profile/prof_file.c krb5-1.7/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.7/src/util/profile/prof_file.c 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -29,6 +29,7 @@
|
||||
- if ((pidfile = fopen(PID_FILE, "w")) != NULL) {
|
||||
+ if ((pidfile = WRITABLEFOPEN(PID_FILE, "w")) != NULL) {
|
||||
fprintf(pidfile, "%d\n", getpid());
|
||||
fclose(pidfile);
|
||||
} else
|
||||
diff -up krb5-1.8/src/util/profile/prof_file.c.selinux-label krb5-1.8/src/util/profile/prof_file.c
|
||||
--- krb5-1.8/src/util/profile/prof_file.c.selinux-label 2009-12-27 19:21:20.000000000 -0500
|
||||
+++ krb5-1.8/src/util/profile/prof_file.c 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -30,6 +30,7 @@
|
||||
#endif
|
||||
|
||||
#include "k5-platform.h"
|
||||
+#include "k5-label.h"
|
||||
|
||||
struct global_shared_profile_data {
|
||||
/* This is the head of the global list of shared trees */
|
||||
@@ -422,7 +423,7 @@ static errcode_t write_data_to_file(prf_
|
||||
/* This is the head of the global list of shared trees */
|
||||
@@ -418,7 +419,7 @@ static errcode_t write_data_to_file(prf_
|
||||
|
||||
errno = 0;
|
||||
errno = 0;
|
||||
|
||||
- f = fopen(new_file, "w");
|
||||
+ f = WRITABLEFOPEN(new_file, "w");
|
||||
if (!f) {
|
||||
retval = errno;
|
||||
if (retval == 0)
|
||||
diff -up krb5-1.7/src/util/support/Makefile.in krb5-1.7/src/util/support/Makefile.in
|
||||
--- krb5-1.7/src/util/support/Makefile.in 2009-01-05 15:27:53.000000000 -0500
|
||||
+++ krb5-1.7/src/util/support/Makefile.in 2009-06-04 13:47:20.000000000 -0400
|
||||
@@ -38,6 +38,7 @@ PRINTF_OBJ= @PRINTF_OBJ@
|
||||
- f = fopen(new_file, "w");
|
||||
+ f = WRITABLEFOPEN(new_file, "w");
|
||||
if (!f) {
|
||||
retval = errno;
|
||||
if (retval == 0)
|
||||
diff -up krb5-1.8/src/util/support/Makefile.in.selinux-label krb5-1.8/src/util/support/Makefile.in
|
||||
--- krb5-1.8/src/util/support/Makefile.in.selinux-label 2009-11-23 20:25:10.000000000 -0500
|
||||
+++ krb5-1.8/src/util/support/Makefile.in 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -54,6 +54,7 @@ IPC_SYMS= \
|
||||
|
||||
STLIBOBJS= \
|
||||
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 \
|
||||
plugins.o \
|
||||
errors.o \
|
||||
@@ -86,7 +87,7 @@ SRCS=\
|
||||
@@ -108,7 +109,7 @@ SRCS=\
|
||||
|
||||
SHLIB_EXPDEPS =
|
||||
# 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_RDIRS=$(KRB5_LIBDIR)
|
||||
|
||||
diff -up /dev/null krb5-1.7/src/util/support/selinux.c
|
||||
--- /dev/null 2009-06-04 10:34:55.169007373 -0400
|
||||
+++ krb5-1.7/src/util/support/selinux.c 2009-06-04 13:47:20.000000000 -0400
|
||||
diff -up krb5-1.8/src/util/support/selinux.c.selinux-label krb5-1.8/src/util/support/selinux.c
|
||||
--- krb5-1.8/src/util/support/selinux.c.selinux-label 2010-03-05 10:57:23.000000000 -0500
|
||||
+++ krb5-1.8/src/util/support/selinux.c 2010-03-05 10:57:23.000000000 -0500
|
||||
@@ -0,0 +1,346 @@
|
||||
+/*
|
||||
+ * 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
|
||||
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
|
||||
--- krb5-1.7/src/appl/bsd/defines.h 2008-12-15 15:29:01.000000000 -0500
|
||||
+++ krb5-1.7/src/appl/bsd/defines.h 2009-06-04 14:18:48.000000000 -0400
|
||||
@@ -34,6 +34,7 @@ extern int kcmd (int *sock, char **ahost
|
||||
diff -up krb5-appl-1.0/bsd/defines.h.io krb5-appl-1.0/bsd/defines.h
|
||||
--- krb5-appl-1.0/bsd/defines.h.io 2009-11-16 05:27:04.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/defines.h 2010-03-05 11:00:06.000000000 -0500
|
||||
@@ -36,6 +36,7 @@ extern int kcmd (int *sock, char **ahost
|
||||
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_write (int fd, char *buf, size_t len, int secondary);
|
||||
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
|
||||
--- krb5-1.7/src/appl/bsd/kcmd.c 2009-04-15 16:07:15.000000000 -0400
|
||||
+++ krb5-1.7/src/appl/bsd/kcmd.c 2009-06-04 14:18:48.000000000 -0400
|
||||
@@ -686,6 +686,11 @@ void rcmd_stream_init_normal()
|
||||
diff -up krb5-appl-1.0/bsd/kcmd.c.io krb5-appl-1.0/bsd/kcmd.c
|
||||
--- krb5-appl-1.0/bsd/kcmd.c.io 2009-11-16 05:27:04.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/kcmd.c 2010-03-05 11:00:06.000000000 -0500
|
||||
@@ -767,6 +767,11 @@ void rcmd_stream_init_normal()
|
||||
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,
|
||||
protonum)
|
||||
krb5_keyblock *in_keyblock;
|
||||
@@ -846,7 +851,8 @@ static int v5_des_read(fd, buf, len, sec
|
||||
cc = krb5_net_read(bsd_context, fd, &c, 1);
|
||||
@@ -927,7 +932,8 @@ static int v5_des_read(fd, buf, len, sec
|
||||
cc = full_read(fd, &c, 1);
|
||||
/* we should check for non-blocking here, but we'd have
|
||||
to make it save partial reads as well. */
|
||||
- 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 (c == 0 || !do_lencheck) break;
|
||||
}
|
||||
diff -up krb5-1.7/src/appl/bsd/krsh.c krb5-1.7/src/appl/bsd/krsh.c
|
||||
--- krb5-1.7/src/appl/bsd/krsh.c 2009-06-04 14:18:47.000000000 -0400
|
||||
+++ krb5-1.7/src/appl/bsd/krsh.c 2009-06-04 14:18:48.000000000 -0400
|
||||
@@ -115,10 +115,11 @@ main(argc, argv0)
|
||||
diff -up krb5-appl-1.0/bsd/krsh.c.io krb5-appl-1.0/bsd/krsh.c
|
||||
--- krb5-appl-1.0/bsd/krsh.c.io 2010-03-05 11:00:05.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/krsh.c 2010-03-05 11:00:06.000000000 -0500
|
||||
@@ -117,10 +117,11 @@ main(argc, argv0)
|
||||
char **argv0;
|
||||
{
|
||||
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;
|
||||
struct servent *sp;
|
||||
struct servent defaultservent;
|
||||
@@ -508,9 +509,14 @@ main(argc, argv0)
|
||||
@@ -510,9 +511,14 @@ main(argc, argv0)
|
||||
FD_ZERO(&readfrom);
|
||||
FD_SET(rfd2, &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) {
|
||||
perror("select");
|
||||
exit(1);
|
||||
@@ -518,22 +524,38 @@ main(argc, argv0)
|
||||
@@ -520,22 +526,38 @@ main(argc, argv0)
|
||||
continue;
|
||||
}
|
||||
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));
|
||||
if (nflag == 0)
|
||||
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-06-04 14:18:47.000000000 -0400
|
||||
+++ krb5-1.7/src/appl/bsd/krshd.c 2009-06-04 14:18:48.000000000 -0400
|
||||
@@ -583,7 +583,8 @@ void doit(f, fromp)
|
||||
diff -up krb5-appl-1.0/bsd/krshd.c.io krb5-appl-1.0/bsd/krshd.c
|
||||
--- krb5-appl-1.0/bsd/krshd.c.io 2010-03-05 11:00:05.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/krshd.c 2010-03-05 11:00:06.000000000 -0500
|
||||
@@ -585,7 +585,8 @@ void doit(f, fromp)
|
||||
short port;
|
||||
int pv[2], pw[2], px[2], cc;
|
||||
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;
|
||||
#ifdef POSIX_SIGNALS
|
||||
struct sigaction sa;
|
||||
@@ -1214,6 +1215,10 @@ void doit(f, fromp)
|
||||
@@ -1216,6 +1217,10 @@ void doit(f, fromp)
|
||||
if (pw[0] > maxfd)
|
||||
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 s, signal child */
|
||||
/* 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 {
|
||||
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)) {
|
||||
/* 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)) {
|
||||
@ -221,7 +221,7 @@ diff -up krb5-1.7/src/appl/bsd/krshd.c krb5-1.7/src/appl/bsd/krshd.c
|
||||
} else {
|
||||
int wcc;
|
||||
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 */
|
||||
/* might check for EPIPE */
|
||||
(void) close(px[1]);
|
@ -8,25 +8,254 @@
|
||||
instead of fseek(), which takes a long and might not handle the full
|
||||
range of values.
|
||||
RT#6524
|
||||
Index: krb5/src/appl/gssftp/configure.in
|
||||
===================================================================
|
||||
--- krb5/src/appl/gssftp/configure.in (revision 22425)
|
||||
+++ krb5/src/appl/gssftp/configure.in (working copy)
|
||||
@@ -12,6 +12,9 @@
|
||||
AC_HEADER_STDARG
|
||||
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)
|
||||
|
||||
diff -up krb5-appl-1.0/bsd/krcp.c.largefile krb5-appl-1.0/bsd/krcp.c
|
||||
--- krb5-appl-1.0/bsd/krcp.c.largefile 2010-03-05 11:06:23.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/krcp.c 2010-03-05 11:06:24.000000000 -0500
|
||||
@@ -748,8 +748,13 @@ void source(argc, argv)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
+#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_FUNC_FSEEKO
|
||||
+AC_CHECK_TYPES([long long])
|
||||
CHECK_UTMP
|
||||
DECLARE_SYS_ERRLIST
|
||||
AC_REPLACE_FUNCS(getdtablesize)
|
||||
Index: krb5/src/appl/gssftp/ftp/ftp_var.h
|
||||
===================================================================
|
||||
--- krb5/src/appl/gssftp/ftp/ftp_var.h (revision 22425)
|
||||
+++ krb5/src/appl/gssftp/ftp/ftp_var.h (working copy)
|
||||
@@ -46,13 +46,19 @@
|
||||
+AC_TYPE_LONG_LONG_INT
|
||||
+AC_TYPE_UNSIGNED_LONG_LONG_INT
|
||||
AC_CHECK_FUNCS(_getpty cgetent getcwd getenv gettosbyname getusershell getutmp)
|
||||
AC_CHECK_FUNCS(getutmpx grantpt inet_aton initgroups isatty killpg killpg)
|
||||
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-appl-1.0/gssftp/ftpd/ftpcmd.y.largefile 2009-11-05 15:15:06.000000000 -0500
|
||||
+++ krb5-appl-1.0/gssftp/ftpd/ftpcmd.y 2010-03-05 11:06:24.000000000 -0500
|
||||
@@ -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 SOCKETNO(fd) _get_osfhandle(fd)
|
||||
#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)
|
||||
+#else
|
||||
+#define FSEEK(fd, offset, whence) fseek(fd, (long) offset, whence)
|
||||
#endif
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
#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).
|
||||
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
|
||||
--- krb5/src/appl/bsd/login.c 2007-07-11 13:50:34.000000000 -0400
|
||||
+++ krb5/src/appl/bsd/login.c 2007-07-11 13:50:36.000000000 -0400
|
||||
@@ -1497,13 +1497,8 @@ int main(argc, argv)
|
||||
diff -up krb5-appl-1.0/bsd/login.c.login_chdir krb5-appl-1.0/bsd/login.c
|
||||
--- krb5-appl-1.0/bsd/login.c.login_chdir 2010-03-05 11:01:23.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/login.c 2010-03-05 11:01:23.000000000 -0500
|
||||
@@ -1115,13 +1115,8 @@ int main(argc, argv)
|
||||
}
|
||||
#endif /* USE_PAM */
|
||||
|
||||
@ -20,8 +20,8 @@ diff -up krb5/src/appl/bsd/login.c krb5/src/appl/bsd/login.c
|
||||
+ exit(0);
|
||||
|
||||
/* nothing else left to fail -- really log in */
|
||||
{
|
||||
@@ -1710,6 +1705,14 @@ int main(argc, argv)
|
||||
login_time = time(NULL);
|
||||
@@ -1293,6 +1288,14 @@ int main(argc, argv)
|
||||
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
|
||||
/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
|
||||
authentication hasn't already been performed, so that it performs
|
||||
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
|
||||
false in the [login] section of /etc/krb5.conf.
|
||||
|
||||
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, ftpd, krshd, and login.krb5 gain dependence on libpam.
|
||||
Originally filed as RT#5939.
|
||||
|
||||
When enabled, ftpd, krshd, login.krb5, and ksu gain dependence on libpam.
|
||||
RT#5939.
|
||||
|
||||
diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
||||
--- krb5-1.7/src/aclocal.m4 2009-02-18 19:38:17.000000000 -0500
|
||||
+++ krb5-1.7/src/aclocal.m4 2009-06-04 13:45:57.000000000 -0400
|
||||
@@ -1771,3 +1771,86 @@ AC_DEFUN(KRB5_AC_KEYRING_CCACHE,[
|
||||
]))
|
||||
diff -up krb5-appl-1.0/aclocal.m4.pam krb5-appl-1.0/aclocal.m4
|
||||
--- 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
|
||||
@@ -486,3 +486,82 @@ AC_DEFUN([KRB5_AC_LIBUTIL],
|
||||
UTIL_LIB=-lutil])dnl
|
||||
AC_SUBST(UTIL_LIB)
|
||||
])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
|
||||
@ -62,8 +54,6 @@ diff -up krb5-1.7/src/aclocal.m4 krb5-1.7/src/aclocal.m4
|
||||
+ withekshellpamservice="$withval",withekshellpamservice=ekshell)
|
||||
+AC_ARG_WITH(pam-ftp-service,[AC_HELP_STRING(--with-ftp-service,[PAM service name for ftpd ["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"
|
||||
+if test "$withpam" != no ; then
|
||||
+ 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.])
|
||||
+ AC_DEFINE_UNQUOTED(FTP_PAM_SERVICE,"$withftppamservice",
|
||||
+ [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"
|
||||
+ NON_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(NON_PAM_MAN)
|
||||
+])dnl
|
||||
diff -up krb5-1.7/src/appl/bsd/configure.in krb5-1.7/src/appl/bsd/configure.in
|
||||
--- krb5-1.7/src/appl/bsd/configure.in 2008-12-15 15:29:01.000000000 -0500
|
||||
+++ krb5-1.7/src/appl/bsd/configure.in 2009-06-04 13:45:57.000000000 -0400
|
||||
@@ -24,6 +24,7 @@ AC_CHECK_LIB(odm,main,
|
||||
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[] =
|
||||
diff -up krb5-appl-1.0/bsd/krshd.c.pam krb5-appl-1.0/bsd/krshd.c
|
||||
--- krb5-appl-1.0/bsd/krshd.c.pam 2009-11-16 05:27:04.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/krshd.c 2010-03-05 10:48:50.000000000 -0500
|
||||
@@ -163,6 +163,10 @@ char copyright[] =
|
||||
#include <arpa/nameser.h>
|
||||
#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
|
||||
#define MAXDNAME 256 /*per the rfc*/
|
||||
#endif
|
||||
@@ -181,6 +185,7 @@ void fatal(int, const char *);
|
||||
@@ -183,6 +187,7 @@ void fatal(int, const char *);
|
||||
|
||||
int require_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;
|
||||
char *kprogdir = KPROGDIR;
|
||||
int netf;
|
||||
@@ -1030,14 +1035,6 @@ void doit(f, fromp)
|
||||
@@ -1032,14 +1037,6 @@ void doit(f, fromp)
|
||||
}
|
||||
#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
|
||||
/* krb5_kuserok returns 1 if OK */
|
||||
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;
|
||||
}
|
||||
|
||||
@ -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 */
|
||||
pwd = (struct passwd *) getpwnam(locuser);
|
||||
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);
|
||||
|
||||
@ -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)) {
|
||||
error("Can't make pipe.\n");
|
||||
goto signout_please;
|
||||
@@ -1416,6 +1453,15 @@ void doit(f, fromp)
|
||||
@@ -1418,6 +1455,15 @@ void doit(f, fromp)
|
||||
|
||||
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
|
||||
/* To make Kerberos rcp work correctly, we must ensure that we
|
||||
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
|
||||
--- krb5-1.7/src/appl/bsd/login.c 2008-12-15 15:29:01.000000000 -0500
|
||||
+++ krb5-1.7/src/appl/bsd/login.c 2009-06-04 13:45:57.000000000 -0400
|
||||
@@ -145,6 +145,11 @@ typedef sigtype (*handler)();
|
||||
#include "osconf.h"
|
||||
diff -up krb5-appl-1.0/bsd/login.c.pam krb5-appl-1.0/bsd/login.c
|
||||
--- krb5-appl-1.0/bsd/login.c.pam 2009-11-21 15:29:19.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/login.c 2010-03-05 10:48:50.000000000 -0500
|
||||
@@ -148,6 +148,11 @@ typedef sigtype (*handler)();
|
||||
#define KRB5_ENV_CCNAME "KRB5CCNAME"
|
||||
#endif /* KRB5_GET_TICKETS */
|
||||
|
||||
+#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 volatile
|
||||
#define volatile
|
||||
@@ -294,6 +299,9 @@ static struct login_confs {
|
||||
@@ -293,6 +298,9 @@ static struct login_confs {
|
||||
char *flagname;
|
||||
int *flag;
|
||||
} 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
|
||||
{"krb5_get_tickets", &login_krb5_get_tickets},
|
||||
{"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())
|
||||
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
|
||||
if (login_krb5_get_tickets) {
|
||||
/* 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 */
|
||||
(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
|
||||
* this terminal are permitted.
|
||||
@@ -1060,6 +1101,21 @@ int main(argc, argv)
|
||||
@@ -1061,6 +1102,21 @@ int main(argc, argv)
|
||||
sleepexit(0);
|
||||
}
|
||||
#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) {
|
||||
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 */
|
||||
|
||||
@ -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')
|
||||
syslog(LOG_INFO, "DIALUP %s, %s", tty, pwd->pw_name);
|
||||
if (pwd->pw_uid == 0)
|
||||
diff -up krb5-1.7/src/appl/bsd/Makefile.in krb5-1.7/src/appl/bsd/Makefile.in
|
||||
--- krb5-1.7/src/appl/bsd/Makefile.in 2009-01-05 15:27:53.000000000 -0500
|
||||
+++ krb5-1.7/src/appl/bsd/Makefile.in 2009-06-04 13:45:57.000000000 -0400
|
||||
@@ -11,12 +11,13 @@ SETENVOBJ=@SETENVOBJ@
|
||||
diff -up krb5-appl-1.0/bsd/Makefile.in.pam krb5-appl-1.0/bsd/Makefile.in
|
||||
--- krb5-appl-1.0/bsd/Makefile.in.pam 2009-11-05 15:10:37.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/Makefile.in 2010-03-05 10:48:50.000000000 -0500
|
||||
@@ -3,11 +3,14 @@ BUILDTOP=$(REL)..
|
||||
|
||||
LOGINLIBS=@LOGINLIBS@
|
||||
LIBOBJS=@LIBOBJS@
|
||||
KRSHDLIBS=@KRSHDLIBS@
|
||||
+PAMOBJS=pam.o
|
||||
+PAM_LIBS=@PAM_LIBS@
|
||||
|
||||
SRCS= $(srcdir)/krcp.c $(srcdir)/krlogin.c $(srcdir)/krsh.c $(srcdir)/kcmd.c \
|
||||
$(srcdir)/forward.c $(srcdir)/login.c $(srcdir)/krshd.c \
|
||||
$(srcdir)/krlogind.c
|
||||
OBJS= krcp.o krlogin.o krsh.o kcmd.o forward.o $(SETENVOBJ) login.o krshd.o \
|
||||
- krlogind.o $(LIBOBJS)
|
||||
+ krlogind.o $(LIBOBJS) $(PAMOBJS)
|
||||
-OBJS= krcp.o krlogin.o krsh.o kcmd.o forward.o login.o krshd.o krlogind.o
|
||||
+OBJS= krcp.o krlogin.o krsh.o kcmd.o forward.o login.o krshd.o krlogind.o \
|
||||
+ $(PAMOBJS)
|
||||
|
||||
UCB_RLOGIN = @UCB_RLOGIN@
|
||||
UCB_RSH = @UCB_RSH@
|
||||
@@ -53,8 +54,8 @@ install::
|
||||
@@ -50,8 +53,8 @@ install::
|
||||
) || exit 1; \
|
||||
done
|
||||
|
||||
-kshd: krshd.o kcmd.o forward.o $(SETENVOBJ) $(LIBOBJS) $(PTY_DEPLIB) $(KRB5_BASE_DEPLIBS) $(APPUTILS_DEPLIB)
|
||||
- $(CC_LINK) -o kshd krshd.o kcmd.o forward.o $(SETENVOBJ) $(LIBOBJS) $(KRSHDLIBS) $(PTY_LIB) $(UTIL_LIB) $(KRB5_BASE_LIBS) $(APPUTILS_LIB)
|
||||
+kshd: krshd.o kcmd.o forward.o $(PAMOBJS) $(SETENVOBJ) $(LIBOBJS) $(PTY_DEPLIB) $(KRB5_BASE_DEPLIBS) $(APPUTILS_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)
|
||||
-kshd: krshd.o kcmd.o forward.o $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||
- $(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) $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||
+ $(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)
|
||||
$(CC_LINK) -o klogind krlogind.o kcmd.o forward.o $(SETENVOBJ) $(LIBOBJS) $(PTY_LIB) $(UTIL_LIB) $(KRB5_BASE_LIBS) $(APPUTILS_LIB)
|
||||
@@ -71,8 +72,8 @@ install::
|
||||
klogind: krlogind.o kcmd.o forward.o $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||
$(CC_LINK) -o klogind krlogind.o kcmd.o forward.o $(PTY_LIB) $(UTIL_LIB) $(MISSING_LIB) $(KRB5_BASE_LIBS) $(LIBS)
|
||||
@@ -68,8 +71,8 @@ install::
|
||||
# No program name transformation is done with login.krb5 since it is directly
|
||||
# referenced by klogind.
|
||||
#
|
||||
-login.krb5: login.o $(SETENVOBJ) $(LIBOBJS) $(PTY_DEPLIB) $(KRB5_BASE_DEPLIBS)
|
||||
- $(CC_LINK) -o login.krb5 login.o $(SETENVOBJ) $(LIBOBJS) $(LOGINLIBS) $(PTY_LIB) $(KRB5_BASE_LIBS)
|
||||
+login.krb5: login.o $(SETENVOBJ) $(PAMOBJS) $(LIBOBJS) $(PTY_DEPLIB) $(KRB5_BASE_DEPLIBS)
|
||||
+ $(CC_LINK) -o login.krb5 login.o $(SETENVOBJ) $(PAMOBJS) $(LIBOBJS) $(LOGINLIBS) $(PTY_LIB) $(KRB5_BASE_LIBS) $(PAM_LIBS)
|
||||
-login.krb5: login.o $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||
- $(CC_LINK) -o login.krb5 login.o $(LOGINLIBS) $(PTY_LIB) $(KRB5_BASE_LIBS) $(MISSING_LIB) $(LIBS)
|
||||
+login.krb5: login.o $(PAMOBJS) $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||
+ $(CC_LINK) -o login.krb5 login.o $(PAMOBJS) $(LOGINLIBS) $(PTY_LIB) $(KRB5_BASE_LIBS) $(MISSING_LIB) $(PAM_LIBS) $(LIBS)
|
||||
|
||||
install::
|
||||
$(INSTALL_PROGRAM) login.krb5 $(DESTDIR)$(SERVER_BINDIR)/login.krb5
|
||||
diff -up /dev/null krb5-1.7/src/appl/bsd/pam.c
|
||||
--- /dev/null 2009-06-04 10:34:55.169007373 -0400
|
||||
+++ krb5-1.7/src/appl/bsd/pam.c 2009-06-04 13:45:57.000000000 -0400
|
||||
@@ -0,0 +1,433 @@
|
||||
diff -up krb5-appl-1.0/bsd/pam.c.pam krb5-appl-1.0/bsd/pam.c
|
||||
--- krb5-appl-1.0/bsd/pam.c.pam 2010-03-05 10:48:50.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/pam.c 2010-03-05 10:48:50.000000000 -0500
|
||||
@@ -0,0 +1,438 @@
|
||||
+/*
|
||||
+ * src/appl/bsd/pam.c
|
||||
+ *
|
||||
+ * Copyright 2007,2009 Red Hat, Inc.
|
||||
+ * Copyright 2007,2009,2010 Red Hat, Inc.
|
||||
+ *
|
||||
+ * All Rights Reserved.
|
||||
+ *
|
||||
@ -447,13 +425,17 @@ diff -up /dev/null krb5-1.7/src/appl/bsd/pam.c
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <unistd.h>
|
||||
+#include "k5-int.h"
|
||||
+#include <profile.h>
|
||||
+#include "pam.h"
|
||||
+
|
||||
+#ifndef MAXPWSIZE
|
||||
+#define MAXPWSIZE 128
|
||||
+#endif
|
||||
+
|
||||
+#ifndef KRB5_ENV_CCNAME
|
||||
+#define KRB5_ENV_CCNAME "KRB5CCNAME"
|
||||
+#endif
|
||||
+
|
||||
+static int appl_pam_started;
|
||||
+static pid_t appl_pam_starter = -1;
|
||||
+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)
|
||||
+{
|
||||
+ int enabled = 1;
|
||||
+ if ((context != NULL) && (context->profile != NULL)) {
|
||||
+ if (profile_get_boolean(context->profile,
|
||||
+ profile_t profile = NULL;
|
||||
+ if ((context != NULL) && (krb5_get_profile(context, &profile) == 0)) {
|
||||
+ if (profile_get_boolean(profile,
|
||||
+ section,
|
||||
+ USE_PAM_CONFIGURATION_KEYWORD,
|
||||
+ NULL,
|
||||
@ -837,9 +820,9 @@ diff -up /dev/null krb5-1.7/src/appl/bsd/pam.c
|
||||
+ return ret;
|
||||
+}
|
||||
+#endif
|
||||
diff -up /dev/null krb5-1.7/src/appl/bsd/pam.h
|
||||
--- /dev/null 2009-06-04 10:34:55.169007373 -0400
|
||||
+++ krb5-1.7/src/appl/bsd/pam.h 2009-06-04 13:45:57.000000000 -0400
|
||||
diff -up krb5-appl-1.0/bsd/pam.h.pam krb5-appl-1.0/bsd/pam.h
|
||||
--- krb5-appl-1.0/bsd/pam.h.pam 2010-03-05 10:48:50.000000000 -0500
|
||||
+++ krb5-appl-1.0/bsd/pam.h 2010-03-05 10:48:50.000000000 -0500
|
||||
@@ -0,0 +1,65 @@
|
||||
+/*
|
||||
+ * 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);
|
||||
+void appl_pam_cleanup(void);
|
||||
+#endif
|
||||
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 2006-03-31 16:00:40.000000000 -0500
|
||||
+++ krb5-1.7/src/appl/gssftp/configure.in 2009-06-04 13:45:57.000000000 -0400
|
||||
@@ -17,6 +17,7 @@ DECLARE_SYS_ERRLIST
|
||||
AC_REPLACE_FUNCS(getdtablesize)
|
||||
AC_CHECK_FUNCS(getcwd getdtablesize getusershell seteuid setreuid setresuid strerror getenv)
|
||||
AC_CHECK_LIB(crypt,crypt) dnl
|
||||
diff -up krb5-appl-1.0/configure.ac.pam krb5-appl-1.0/configure.ac
|
||||
--- krb5-appl-1.0/configure.ac.pam 2009-11-21 16:46:39.000000000 -0500
|
||||
+++ krb5-appl-1.0/configure.ac 2010-03-05 10:48:50.000000000 -0500
|
||||
@@ -156,6 +156,8 @@ AC_CHECK_FUNC(tgetent, ,
|
||||
[AC_MSG_ERROR([Could not find tgetent; are you missing a curses/ncurses library?])])
|
||||
LIBS="$old_LIBS"
|
||||
|
||||
+KRB5_WITH_PAM
|
||||
KRB5_AC_LIBUTIL
|
||||
dnl
|
||||
dnl copied from appl/bsd/configure.in
|
||||
diff -up krb5-1.7/src/appl/gssftp/ftpd/ftpd.c krb5-1.7/src/appl/gssftp/ftpd/ftpd.c
|
||||
--- krb5-1.7/src/appl/gssftp/ftpd/ftpd.c 2009-01-28 00:42:11.000000000 -0500
|
||||
+++ krb5-1.7/src/appl/gssftp/ftpd/ftpd.c 2009-06-04 13:45:57.000000000 -0400
|
||||
@@ -67,6 +67,9 @@ static char sccsid[] = "@(#)ftpd.c 5.40
|
||||
+
|
||||
# Make our operating system-specific security checks and definitions
|
||||
# for libpty, login, and ftpd. The following code decides what
|
||||
# streams modules will be pushed onto a pty. In particular, if
|
||||
diff -up krb5-appl-1.0/gssftp/ftpd/ftpd.c.pam krb5-appl-1.0/gssftp/ftpd/ftpd.c
|
||||
--- krb5-appl-1.0/gssftp/ftpd/ftpd.c.pam 2009-11-18 00:07:46.000000000 -0500
|
||||
+++ 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
|
||||
#include <shadow.h>
|
||||
#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 <setjmp.h>
|
||||
#ifndef POSIX_SETJMP
|
||||
@@ -745,6 +748,22 @@ user(name)
|
||||
@@ -743,6 +746,22 @@ user(name)
|
||||
name);
|
||||
}
|
||||
#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) {
|
||||
strncat(buf, "; Access denied.",
|
||||
@@ -846,6 +865,10 @@ end_login()
|
||||
@@ -843,6 +862,10 @@ end_login()
|
||||
(void) krb5_seteuid((uid_t)0);
|
||||
if (logged_in)
|
||||
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) {
|
||||
#ifdef GSSAPI
|
||||
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 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;
|
||||
sleep(5);
|
||||
if (++login_attempts >= 3) {
|
||||
@@ -973,6 +1006,23 @@ pass(passwd)
|
||||
@@ -970,6 +1003,23 @@ pass(passwd)
|
||||
}
|
||||
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);
|
||||
return;
|
||||
}
|
||||
@@ -988,6 +1038,18 @@ login(passwd, logincode)
|
||||
@@ -985,6 +1035,18 @@ login(passwd, logincode)
|
||||
chown(ccname, pw->pw_uid, pw->pw_gid);
|
||||
#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) initgroups(pw->pw_name, pw->pw_gid);
|
||||
@@ -1960,6 +2022,10 @@ dologout(status)
|
||||
@@ -1966,6 +2028,10 @@ dologout(status)
|
||||
krb5_cc_destroy(kcontext, ccache);
|
||||
#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 */
|
||||
_exit(status);
|
||||
}
|
||||
diff -up krb5-1.7/src/appl/gssftp/ftpd/Makefile.in krb5-1.7/src/appl/gssftp/ftpd/Makefile.in
|
||||
--- krb5-1.7/src/appl/gssftp/ftpd/Makefile.in 2009-01-05 15:27:53.000000000 -0500
|
||||
+++ krb5-1.7/src/appl/gssftp/ftpd/Makefile.in 2009-06-04 13:45:57.000000000 -0400
|
||||
@@ -14,23 +14,25 @@ SETENVOBJ=@SETENVOBJ@
|
||||
LIBOBJS=@LIBOBJS@
|
||||
COMERRLIB=$(BUILDTOP)/util/et/libcom_err.a
|
||||
diff -up krb5-appl-1.0/gssftp/ftpd/Makefile.in.pam krb5-appl-1.0/gssftp/ftpd/Makefile.in
|
||||
--- krb5-appl-1.0/gssftp/ftpd/Makefile.in.pam 2009-07-20 13:21:24.000000000 -0400
|
||||
+++ krb5-appl-1.0/gssftp/ftpd/Makefile.in 2010-03-05 10:48:50.000000000 -0500
|
||||
@@ -6,22 +6,24 @@ PROG_LIBPATH=-L$(TOPLIBD)
|
||||
PROG_RPATH=$(KRB5_LIBDIR)
|
||||
|
||||
FTPD_LIBS=@FTPD_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)/../ftp/glob.c \
|
||||
$(srcdir)/../ftp/radix.c \
|
||||
$(srcdir)/../ftp/secure.c \
|
||||
+ $(srcdir)/../../bsd/pam.c \
|
||||
$(srcdir)/../../bsd/getdtablesize.c $(SETENVSRC)
|
||||
- $(srcdir)/../ftp/secure.c
|
||||
+ $(srcdir)/../ftp/secure.c \
|
||||
+ $(srcdir)/../../bsd/pam.c
|
||||
|
||||
OBJS = ftpd.o ftpcmd.o glob.o popen.o vers.o radix.o \
|
||||
- secure.o $(LIBOBJS) $(SETENVOBJ)
|
||||
+ secure.o pam.o getdtablesize.o $(LIBOBJS) $(SETENVOBJ)
|
||||
- secure.o
|
||||
+ secure.o pam.o
|
||||
|
||||
LOCALINCLUDES = -I$(srcdir)/.. -I$(srcdir)
|
||||
|
||||
all:: ftpd
|
||||
|
||||
ftpd: $(OBJS) $(PTY_DEPLIB) $(GSS_DEPLIBS) $(KRB5_BASE_DEPLIBS)
|
||||
- $(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) $(GSS_LIBS) $(KRB5_BASE_LIBS) $(PAM_LIBS)
|
||||
ftpd: $(OBJS) $(PTY_DEPLIB) $(MISSING_DEPLIB)
|
||||
- $(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) $(MISSING_LIB) $(GSS_LIBS) $(PAM_LIBS) $(LIBS)
|
||||
|
||||
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
|
||||
+ $(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 */
|
||||
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(.
|
||||
|
||||
# NOPOSTFIX
|
@ -1,8 +1,10 @@
|
||||
Start with only TERM defined in the environment, like NetKit rlogind does, and
|
||||
KRB5CCNAME, which we set ourselves.
|
||||
--- krb5-1.3/src/appl/bsd/krlogind.c
|
||||
+++ krb5-1.3/src/appl/bsd/krlogind.c
|
||||
@@ -713,6 +713,9 @@
|
||||
|
||||
diff -up krb5-appl-1.0/bsd/krlogind.c.rlogind-environ krb5-appl-1.0/bsd/krlogind.c
|
||||
--- 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
|
||||
struct sgttyb b;
|
||||
#endif /* POSIX_TERMIOS */
|
||||
@ -10,9 +12,9 @@ KRB5CCNAME, which we set ourselves.
|
||||
+ char *bare_environ[] = {environ_term, environ_ccname, NULL};
|
||||
+
|
||||
if ((retval = pty_open_slave(line, &t))) {
|
||||
fatal(f, error_message(retval));
|
||||
fatal(f, pty_error_message(retval));
|
||||
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
|
||||
* AIX 4.1.4 and HPUX 10
|
||||
*/
|
||||
@ -23,15 +25,14 @@ KRB5CCNAME, which we set ourselves.
|
||||
{
|
||||
char *cp;
|
||||
- if ((cp = strchr(term,'/')))
|
||||
- *cp = '\0';
|
||||
- setenv("TERM",term, 1);
|
||||
+ snprintf(environ_term, sizeof(environ_term) - 1, "TERM=%s", term);
|
||||
+ if ((cp = strchr(environ_term,'/')))
|
||||
+ *cp = '\0';
|
||||
*cp = '\0';
|
||||
- setenv("TERM",term, 1);
|
||||
}
|
||||
|
||||
retval = pty_make_sane_hostname((struct sockaddr *) fromp, maxhostlen,
|
||||
@@ -832,13 +839,13 @@
|
||||
@@ -786,13 +793,13 @@ void doit(f, fromp)
|
||||
if (retval)
|
||||
fatalperror(f, "failed make_sane_hostname");
|
||||
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
|
||||
Name: krb5
|
||||
Version: 1.7.1
|
||||
Release: 6%{?dist}
|
||||
Version: 1.8
|
||||
Release: 1%{?dist}
|
||||
# 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
|
||||
Source0: krb5-%{version}.tar.gz
|
||||
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
|
||||
Source3: krb5-appl-%{appl_version}.tar.gz
|
||||
Source4: kadmind.init
|
||||
Source5: krb5kdc.init
|
||||
Source6: krb5.conf
|
||||
@ -41,7 +45,8 @@ Source22: ekrb5-telnet.xinetd
|
||||
# and tarred up.
|
||||
Source23: krb5-%{version}-pdf.tar.gz
|
||||
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
|
||||
Source27: kshell.pamd
|
||||
Source28: ekshell.pamd
|
||||
@ -51,45 +56,43 @@ Source31: kerberos-adm.portreserve
|
||||
Source32: krb5_prop.portreserve
|
||||
|
||||
Patch3: krb5-1.3-netkit-rsh.patch
|
||||
Patch4: krb5-1.3-rlogind-environ.patch
|
||||
Patch5: krb5-1.3-ksu-access.patch
|
||||
Patch6: krb5-1.5-ksu-path.patch
|
||||
Patch4: krb5-appl-1.0-rlogind-environ.patch
|
||||
Patch5: krb5-1.8-ksu-access.patch
|
||||
Patch6: krb5-1.8-ksu-path.patch
|
||||
Patch11: krb5-1.2.1-passive.patch
|
||||
Patch12: krb5-1.7-ktany.patch
|
||||
Patch14: krb5-1.3-ftp-glob.patch
|
||||
Patch16: krb5-1.7-buildconf.patch
|
||||
Patch23: krb5-1.3.1-dns.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
|
||||
Patch33: krb5-1.7-io.patch
|
||||
Patch33: krb5-appl-1.0-io.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
|
||||
Patch41: krb5-1.6.3-login-lpass.patch
|
||||
Patch53: krb5-1.7-nodeplibs.patch
|
||||
Patch55: krb5-1.6.1-empty.patch
|
||||
Patch56: krb5-1.7-doublelog.patch
|
||||
Patch57: krb5-1.6.2-login_chdir.patch
|
||||
Patch58: krb5-1.6.2-key_exp.patch
|
||||
Patch59: krb5-trunk-kpasswd_tcp.patch
|
||||
Patch60: krb5-1.7-pam.patch
|
||||
Patch61: krb5-trunk-manpaths.patch
|
||||
Patch63: krb5-1.7-selinux-label.patch
|
||||
Patch57: krb5-appl-1.0-login_chdir.patch
|
||||
Patch58: krb5-1.8-key_exp.patch
|
||||
Patch59: krb5-1.8-kpasswd_tcp.patch
|
||||
Patch60: krb5-1.8-pam.patch
|
||||
Patch160: krb5-appl-1.0-pam.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
|
||||
Patch71: krb5-1.7-dirsrv-accountlock.patch
|
||||
Patch71: krb5-1.8-dirsrv-accountlock.patch
|
||||
Patch72: krb5-1.6.3-ftp_fdleak.patch
|
||||
Patch73: krb5-1.6.3-ftp_glob_runique.patch
|
||||
Patch79: krb5-trunk-ftp_mget_case.patch
|
||||
Patch86: krb5-1.7-time_t_size.patch
|
||||
Patch88: krb5-1.7-sizeof.patch
|
||||
Patch89: krb5-1.7-largefile.patch
|
||||
Patch90: krb5-1.7-openssl-1.0.patch
|
||||
Patch89: krb5-appl-1.0-largefile.patch
|
||||
Patch93: krb5-1.7-create_on_load.patch
|
||||
Patch95: krb5-1.7-opte.patch
|
||||
Patch96: krb5-1.7-exp_warn.patch
|
||||
Patch97: http://web.mit.edu/kerberos/advisories/2010-001-patch.txt
|
||||
Patch98: krb5-1.7.1-kpasswd_ccache.patch
|
||||
Patch95: krb5-1.8-opte.patch
|
||||
Patch96: krb5-1.8-exp_warn.patch
|
||||
Patch98: krb5-1.8-kpasswd_ccache.patch
|
||||
|
||||
License: MIT
|
||||
URL: http://web.mit.edu/kerberos/www/
|
||||
@ -207,8 +210,7 @@ Group: System Environment/Base
|
||||
Requires: %{name}-workstation = %{version}-%{release}
|
||||
Requires(post): initscripts
|
||||
Requires(postun): initscripts
|
||||
# mktemp is used by krb5-send-pr
|
||||
Requires: mktemp, xinetd, /etc/pam.d/%{login_pam_service}
|
||||
Requires: xinetd, /etc/pam.d/%{login_pam_service}
|
||||
|
||||
%description 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.
|
||||
|
||||
%prep
|
||||
%setup -q -a 3 -a 23
|
||||
ln -s README LICENSE
|
||||
pushd src
|
||||
%patch60 -p2 -b .pam
|
||||
%patch61 -p0 -b .manpaths
|
||||
%setup -q -a 23 -a 100
|
||||
ln -s NOTICE LICENSE
|
||||
|
||||
%patch60 -p1 -b .pam
|
||||
pushd krb5-appl-%{appl_version}
|
||||
%patch160 -p1 -b .pam
|
||||
popd
|
||||
|
||||
%patch61 -p1 -b .manpaths
|
||||
pushd krb5-appl-%{appl_version}
|
||||
%patch161 -p1 -b .manpaths
|
||||
popd
|
||||
|
||||
%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
|
||||
popd
|
||||
|
||||
%patch5 -p1 -b .ksu-access
|
||||
%patch6 -p1 -b .ksu-path
|
||||
%patch11 -p1 -b .passive
|
||||
pushd krb5-appl-%{appl_version}
|
||||
%patch11 -p3 -b .passive
|
||||
popd
|
||||
%patch12 -p1 -b .ktany
|
||||
%patch14 -p1 -b .ftp-glob
|
||||
pushd krb5-appl-%{appl_version}
|
||||
%patch14 -p3 -b .ftp-glob
|
||||
popd
|
||||
%patch16 -p1 -b .buildconf
|
||||
%patch23 -p1 -b .dns
|
||||
# Removes a malloc(0) case, nothing more.
|
||||
# %patch26 -p1 -b .efence
|
||||
%patch29 -p1 -b .kprop-mktemp
|
||||
%patch30 -p1 -b .send-pr-tempfile
|
||||
pushd krb5-appl-%{appl_version}
|
||||
%patch33 -p1 -b .io
|
||||
%patch36 -p1 -b .rcp-markus
|
||||
%patch36 -p3 -b .rcp-markus
|
||||
popd
|
||||
%patch39 -p1 -b .api
|
||||
%patch40 -p1 -b .telnet-environ
|
||||
%patch41 -p1 -b .login-lpass
|
||||
pushd krb5-appl-%{appl_version}
|
||||
%patch40 -p3 -b .telnet-environ
|
||||
popd
|
||||
%patch53 -p1 -b .nodeplibs
|
||||
#%patch55 -p1 -b .empty
|
||||
%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
|
||||
%patch59 -p0 -b .kpasswd_tcp
|
||||
%patch59 -p1 -b .kpasswd_tcp
|
||||
#%patch70 -p0 -b .kpasswd_tcp2
|
||||
%patch71 -p1 -b .dirsrv-accountlock
|
||||
%patch72 -p1 -b .ftp_fdleak
|
||||
%patch73 -p1 -b .ftp_glob_runique
|
||||
%patch79 -p0 -b .ftp_mget_case
|
||||
%patch86 -p1 -b .time_t_size
|
||||
%patch88 -p1 -b .sizeof
|
||||
pushd krb5-appl-%{appl_version}
|
||||
%patch72 -p3 -b .ftp_fdleak
|
||||
%patch73 -p3 -b .ftp_glob_runique
|
||||
%patch79 -p2 -b .ftp_mget_case
|
||||
%patch88 -p3 -b .sizeof
|
||||
%patch89 -p1 -b .largefile
|
||||
%patch90 -p0 -b .openssl-1.0
|
||||
%patch93 -p1 -b .create_on_load
|
||||
popd
|
||||
# Shouldn't be necessary in 1.8.
|
||||
##%patch93 -p1 -b .create_on_load
|
||||
%patch95 -p1 -b .opte
|
||||
%patch96 -p1 -b .exp_warn
|
||||
%patch97 -p1 -b .2010-001
|
||||
%patch98 -p1 -b .kpasswd-ccache
|
||||
gzip doc/*.ps
|
||||
|
||||
@ -284,7 +305,7 @@ sed -i -e '1c\
|
||||
\\usepackage{hyperref}' doc/implement/implement.tex
|
||||
|
||||
# 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
|
||||
# "krb5-trunk-manpaths.txt" source file.
|
||||
@ -293,6 +314,11 @@ cat %{SOURCE25} | while read manpage ; do
|
||||
mv "$manpage" "$manpage".in
|
||||
done
|
||||
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
|
||||
# "krb5-tex-pdf.sh" source file.
|
||||
@ -315,20 +341,21 @@ egrep -iv '(^$|^dn:|^changetype:|^add:)' $inldif >> 60kerberos.ldif
|
||||
touch -r $inldif 60kerberos.ldif
|
||||
|
||||
# Rebuild the configure scripts.
|
||||
cd src
|
||||
top=`pwd`
|
||||
for configurein in `find -name configure.in -type f` ; do
|
||||
pushd `dirname $configurein`
|
||||
grep -q A._CONFIG_HEADER configure.in && autoheader -I "$top"
|
||||
autoconf -I "$top"
|
||||
popd
|
||||
done
|
||||
pushd src
|
||||
autoheader
|
||||
autoconf
|
||||
popd
|
||||
|
||||
pushd krb5-appl-%{appl_version}
|
||||
autoheader
|
||||
autoconf
|
||||
popd
|
||||
|
||||
%build
|
||||
cd src
|
||||
INCLUDES=-I%{_includedir}/et
|
||||
# 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`"
|
||||
%configure \
|
||||
CC="%{__cc}" \
|
||||
@ -340,10 +367,6 @@ CPPFLAGS="`echo $DEFINES $INCLUDES`"
|
||||
SS_LIB="-lss -lncurses" \
|
||||
%endif
|
||||
--enable-shared \
|
||||
--bindir=%{krb5prefix}/bin \
|
||||
--mandir=%{krb5prefix}/man \
|
||||
--sbindir=%{krb5prefix}/sbin \
|
||||
--datadir=%{krb5prefix}/share \
|
||||
--localstatedir=%{_var}/kerberos \
|
||||
--disable-rpath \
|
||||
--with-system-et \
|
||||
@ -364,11 +387,28 @@ CPPFLAGS="`echo $DEFINES $INCLUDES`"
|
||||
--disable-pkinit \
|
||||
%endif
|
||||
--with-pam \
|
||||
--with-pam-login-service=%{login_pam_service} \
|
||||
--with-selinux
|
||||
# Now build it.
|
||||
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.
|
||||
: 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.
|
||||
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} \
|
||||
$RPM_BUILD_ROOT/etc/profile.d/krb5-$subpackage.sh
|
||||
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
|
||||
|
||||
# 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
|
||||
# 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.
|
||||
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.
|
||||
touch $RPM_BUILD_ROOT/rootfile
|
||||
@ -489,13 +530,6 @@ for library in libgssapi_krb5 libgssrpc libk5crypto libkrb5 libkrb5support ; do
|
||||
popd
|
||||
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
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
@ -574,62 +608,56 @@ fi
|
||||
exit 0
|
||||
|
||||
%files workstation
|
||||
%defattr(-,root,root)
|
||||
%docdir %{krb5prefix}/man
|
||||
%config(noreplace) /etc/profile.d/krb5-workstation.sh
|
||||
%config(noreplace) /etc/profile.d/krb5-workstation.csh
|
||||
%defattr(-,root,root,-)
|
||||
%doc doc/user*.ps.gz src/config-files/services.append
|
||||
%doc doc/{kdestroy,kinit,klist,kpasswd,ksu}.html
|
||||
%doc doc/krb5-user.html
|
||||
%attr(0755,root,root) %doc src/config-files/convert-config-files
|
||||
%{_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
|
||||
# app servers other than those built from this source package.
|
||||
%{krb5prefix}/bin/kdestroy
|
||||
%{krb5prefix}/man/man1/kdestroy.1*
|
||||
%{krb5prefix}/bin/kinit
|
||||
%{krb5prefix}/man/man1/kinit.1*
|
||||
%{krb5prefix}/bin/klist
|
||||
%{krb5prefix}/man/man1/klist.1*
|
||||
%{krb5prefix}/bin/kpasswd
|
||||
%{krb5prefix}/man/man1/kpasswd.1*
|
||||
%{_bindir}/kdestroy
|
||||
%{_mandir}/man1/kdestroy.1*
|
||||
%{_bindir}/kinit
|
||||
%{_mandir}/man1/kinit.1*
|
||||
%{_bindir}/klist
|
||||
%{_mandir}/man1/klist.1*
|
||||
%{_bindir}/kpasswd
|
||||
%{_mandir}/man1/kpasswd.1*
|
||||
|
||||
%{krb5prefix}/bin/kvno
|
||||
%{krb5prefix}/man/man1/kvno.1*
|
||||
%{krb5prefix}/bin/kadmin
|
||||
%{krb5prefix}/man/man1/kadmin.1*
|
||||
%{krb5prefix}/bin/k5srvutil
|
||||
%{krb5prefix}/man/man1/k5srvutil.1*
|
||||
%{krb5prefix}/bin/ktutil
|
||||
%{krb5prefix}/man/man1/ktutil.1*
|
||||
%{_bindir}/kvno
|
||||
%{_mandir}/man1/kvno.1*
|
||||
%{_bindir}/kadmin
|
||||
%{_mandir}/man1/kadmin.1*
|
||||
%{_bindir}/k5srvutil
|
||||
%{_mandir}/man1/k5srvutil.1*
|
||||
%{_bindir}/ktutil
|
||||
%{_mandir}/man1/ktutil.1*
|
||||
|
||||
# Doesn't really fit anywhere else.
|
||||
%attr(4755,root,root) %{krb5prefix}/bin/ksu
|
||||
%{krb5prefix}/man/man1/ksu.1*
|
||||
%attr(4755,root,root) %{_bindir}/ksu
|
||||
%{_mandir}/man1/ksu.1*
|
||||
%config(noreplace) /etc/pam.d/ksu
|
||||
|
||||
# Problem-reporting tool.
|
||||
%{krb5prefix}/sbin/krb5-send-pr
|
||||
%{krb5prefix}/man/man1/krb5-send-pr.1*
|
||||
%{_sbindir}/krb5-send-pr
|
||||
%dir %{_datadir}/gnats
|
||||
%{_datadir}/gnats/mit
|
||||
%{_mandir}/man1/krb5-send-pr.1*
|
||||
|
||||
%files workstation-clients
|
||||
%defattr(-,root,root)
|
||||
%defattr(-,root,root,-)
|
||||
%docdir %{krb5prefix}/man
|
||||
%doc doc/{ftp,rcp,rlogin,rsh,telnet}.html
|
||||
%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}/bin
|
||||
%dir %{krb5prefix}/man
|
||||
%dir %{krb5prefix}/man/man1
|
||||
%dir %{krb5prefix}/sbin
|
||||
|
||||
# Used by both clients and servers.
|
||||
%{krb5prefix}/bin/rcp
|
||||
@ -646,11 +674,15 @@ exit 0
|
||||
%{krb5prefix}/man/man1/rsh.1*
|
||||
%{krb5prefix}/bin/telnet
|
||||
%{krb5prefix}/man/man1/telnet.1*
|
||||
%{krb5prefix}/man/man1/tmac.doc*
|
||||
|
||||
%files workstation-servers
|
||||
%defattr(-,root,root)
|
||||
%defattr(-,root,root,-)
|
||||
%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}/bin
|
||||
%dir %{krb5prefix}/man
|
||||
@ -658,10 +690,6 @@ exit 0
|
||||
%dir %{krb5prefix}/man/man8
|
||||
%dir %{krb5prefix}/sbin
|
||||
|
||||
# Problem-reporting tool.
|
||||
%{krb5prefix}/sbin/krb5-send-pr
|
||||
%{krb5prefix}/man/man1/krb5-send-pr.1*
|
||||
|
||||
# Used by both clients and servers.
|
||||
%{krb5prefix}/bin/rcp
|
||||
%{krb5prefix}/man/man1/rcp.1*
|
||||
@ -686,8 +714,8 @@ exit 0
|
||||
%{krb5prefix}/man/man8/telnetd.8*
|
||||
|
||||
%files server
|
||||
%defattr(-,root,root)
|
||||
%docdir %{krb5prefix}/man
|
||||
%defattr(-,root,root,-)
|
||||
%docdir %{_mandir}
|
||||
|
||||
/etc/rc.d/init.d/krb5kdc
|
||||
/etc/rc.d/init.d/kadmin
|
||||
@ -700,6 +728,8 @@ exit 0
|
||||
|
||||
%doc doc/admin*.ps.gz
|
||||
%doc doc/install*.ps.gz
|
||||
%doc doc/krb5-admin.html
|
||||
%doc doc/krb5-install.html
|
||||
|
||||
%{_infodir}/krb5-admin.info*
|
||||
%{_infodir}/krb5-install.info*
|
||||
@ -709,82 +739,72 @@ exit 0
|
||||
%config(noreplace) %{_var}/kerberos/krb5kdc/kdc.conf
|
||||
%config(noreplace) %{_var}/kerberos/krb5kdc/kadm5.acl
|
||||
|
||||
%dir %{krb5prefix}
|
||||
%dir %{krb5prefix}/bin
|
||||
%dir %{_libdir}/krb5
|
||||
%dir %{_libdir}/krb5/plugins
|
||||
%dir %{_libdir}/krb5/plugins/kdb
|
||||
%dir %{_libdir}/krb5/plugins/preauth
|
||||
%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.
|
||||
%{krb5prefix}/sbin/krb5-send-pr
|
||||
%{krb5prefix}/man/man1/krb5-send-pr.1*
|
||||
%{_sbindir}/krb5-send-pr
|
||||
%dir %{_datadir}/gnats
|
||||
%{_datadir}/gnats/mit
|
||||
%{_mandir}/man1/krb5-send-pr.1*
|
||||
|
||||
# KDC binaries.
|
||||
%{krb5prefix}/man/man5/kdc.conf.5*
|
||||
%{krb5prefix}/sbin/kadmin.local
|
||||
%{krb5prefix}/man/man8/kadmin.local.8*
|
||||
%{krb5prefix}/sbin/kadmind
|
||||
%{krb5prefix}/man/man8/kadmind.8*
|
||||
%{krb5prefix}/sbin/kdb5_util
|
||||
%{krb5prefix}/man/man8/kdb5_util.8*
|
||||
%{krb5prefix}/sbin/kprop
|
||||
%{krb5prefix}/man/man8/kprop.8*
|
||||
%{krb5prefix}/sbin/kpropd
|
||||
%{krb5prefix}/man/man8/kpropd.8*
|
||||
%{krb5prefix}/sbin/kproplog
|
||||
%{krb5prefix}/man/man8/kproplog.8*
|
||||
%{krb5prefix}/sbin/krb5kdc
|
||||
%{krb5prefix}/man/man8/krb5kdc.8*
|
||||
# KDC binaries and configuration.
|
||||
%{_mandir}/man5/kdc.conf.5*
|
||||
%{_sbindir}/kadmin.local
|
||||
%{_mandir}/man8/kadmin.local.8*
|
||||
%{_sbindir}/kadmind
|
||||
%{_mandir}/man8/kadmind.8*
|
||||
%{_sbindir}/kdb5_util
|
||||
%{_mandir}/man8/kdb5_util.8*
|
||||
%{_sbindir}/kprop
|
||||
%{_mandir}/man8/kprop.8*
|
||||
%{_sbindir}/kpropd
|
||||
%{_mandir}/man8/kpropd.8*
|
||||
%{_sbindir}/kproplog
|
||||
%{_mandir}/man8/kproplog.8*
|
||||
%{_sbindir}/krb5kdc
|
||||
%{_mandir}/man8/krb5kdc.8*
|
||||
|
||||
# This is here for people who want to test their server, and also
|
||||
# included in devel package for similar reasons.
|
||||
%{krb5prefix}/bin/sclient
|
||||
%{krb5prefix}/man/man1/sclient.1*
|
||||
%{krb5prefix}/sbin/sserver
|
||||
%{krb5prefix}/man/man8/sserver.8*
|
||||
%{_bindir}/sclient
|
||||
%{_mandir}/man1/sclient.1*
|
||||
%{_sbindir}/sserver
|
||||
%{_mandir}/man8/sserver.8*
|
||||
|
||||
%if %{WITH_LDAP}
|
||||
%files server-ldap
|
||||
%defattr(-,root,root)
|
||||
%docdir %{krb5prefix}/man
|
||||
%defattr(-,root,root,-)
|
||||
%docdir %{_mandir}
|
||||
%doc src/plugins/kdb/ldap/libkdb_ldap/kerberos.ldif
|
||||
%doc src/plugins/kdb/ldap/libkdb_ldap/kerberos.schema
|
||||
%doc 60kerberos.ldif
|
||||
%dir %{_libdir}/krb5
|
||||
%dir %{_libdir}/krb5/plugins
|
||||
%dir %{_libdir}/krb5/plugins/kdb
|
||||
%dir %{krb5prefix}
|
||||
%dir %{krb5prefix}/man
|
||||
%dir %{krb5prefix}/man/man8
|
||||
%dir %{krb5prefix}/sbin
|
||||
%{_libdir}/krb5/plugins/kdb/kldap.so
|
||||
%{_libdir}/libkdb_ldap.so
|
||||
%{_libdir}/libkdb_ldap.so.*
|
||||
%{krb5prefix}/man/man8/kdb5_ldap_util.8.gz
|
||||
%{krb5prefix}/sbin/kdb5_ldap_util
|
||||
%{_mandir}/man8/kdb5_ldap_util.8.gz
|
||||
%{_sbindir}/kdb5_ldap_util
|
||||
%endif
|
||||
|
||||
%files libs
|
||||
%defattr(-,root,root)
|
||||
%doc README LICENSE
|
||||
%docdir %{krb5prefix}/man
|
||||
%defattr(-,root,root,-)
|
||||
%doc README NOTICE LICENSE
|
||||
%docdir %{_mandir}
|
||||
%verify(not md5 size mtime) %config(noreplace) /etc/krb5.conf
|
||||
/%{_mandir}/man1/tmac.doc*
|
||||
/%{_mandir}/man1/kerberos.1*
|
||||
/%{_mandir}/man5/.k5login.5*
|
||||
/%{_mandir}/man5/krb5.conf.5*
|
||||
/%{_lib}/libgssapi_krb5.so.*
|
||||
/%{_lib}/libgssrpc.so.*
|
||||
/%{_lib}/libk5crypto.so.*
|
||||
%{_libdir}/libkadm5clnt.so.*
|
||||
%{_libdir}/libkadm5srv.so.*
|
||||
%{_libdir}/libkadm5clnt_mit.so.*
|
||||
%{_libdir}/libkadm5srv_mit.so.*
|
||||
%{_libdir}/libkdb5.so.*
|
||||
/%{_lib}/libkrb5.so.*
|
||||
/%{_lib}/libkrb5support.so.*
|
||||
@ -797,7 +817,7 @@ exit 0
|
||||
|
||||
%if %{WITH_OPENSSL}
|
||||
%files pkinit-openssl
|
||||
%defattr(-,root,root)
|
||||
%defattr(-,root,root,-)
|
||||
%dir %{_libdir}/krb5
|
||||
%dir %{_libdir}/krb5/plugins
|
||||
%dir %{_libdir}/krb5/plugins/preauth
|
||||
@ -805,55 +825,58 @@ exit 0
|
||||
%endif
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root)
|
||||
|
||||
%config(noreplace) /etc/profile.d/krb5-devel.sh
|
||||
%config(noreplace) /etc/profile.d/krb5-devel.csh
|
||||
|
||||
%docdir %{krb5prefix}/man
|
||||
%defattr(-,root,root,-)
|
||||
%docdir %{_mandir}
|
||||
%doc doc/api/*.pdf
|
||||
%doc doc/ccapi
|
||||
%doc doc/implement/*.pdf
|
||||
%doc doc/kadm5/*.pdf
|
||||
%doc doc/kadmin
|
||||
%doc doc/kim
|
||||
%doc doc/krb5-protocol
|
||||
%doc doc/rpc
|
||||
%doc doc/threads.txt
|
||||
|
||||
%dir %{krb5prefix}
|
||||
%dir %{krb5prefix}/bin
|
||||
%dir %{krb5prefix}/man
|
||||
%dir %{krb5prefix}/man/man1
|
||||
%dir %{krb5prefix}/man/man8
|
||||
%dir %{krb5prefix}/sbin
|
||||
|
||||
%{_includedir}/*
|
||||
%{_libdir}/libgssapi_krb5.so
|
||||
%{_libdir}/libgssrpc.so
|
||||
%{_libdir}/libk5crypto.so
|
||||
%{_libdir}/libkadm5clnt.so
|
||||
%{_libdir}/libkadm5clnt_mit.so
|
||||
%{_libdir}/libkadm5srv.so
|
||||
%{_libdir}/libkadm5srv_mit.so
|
||||
%{_libdir}/libkdb5.so
|
||||
%{_libdir}/libkrb5.so
|
||||
%{_libdir}/libkrb5support.so
|
||||
|
||||
%{krb5prefix}/bin/krb5-config
|
||||
%{krb5prefix}/bin/sclient
|
||||
%{krb5prefix}/man/man1/krb5-config.1*
|
||||
%{krb5prefix}/man/man1/sclient.1*
|
||||
%{krb5prefix}/man/man8/sserver.8*
|
||||
%{krb5prefix}/sbin/sserver
|
||||
%{_bindir}/krb5-config
|
||||
%{_bindir}/sclient
|
||||
%{_mandir}/man1/krb5-config.1*
|
||||
%{_mandir}/man1/sclient.1*
|
||||
%{_mandir}/man8/sserver.8*
|
||||
%{_sbindir}/sserver
|
||||
|
||||
# Protocol test clients.
|
||||
%{krb5prefix}/bin/sim_client
|
||||
%{krb5prefix}/bin/gss-client
|
||||
%{krb5prefix}/bin/uuclient
|
||||
%{_bindir}/sim_client
|
||||
%{_bindir}/gss-client
|
||||
%{_bindir}/uuclient
|
||||
|
||||
# Protocol test servers.
|
||||
%{krb5prefix}/sbin/sim_server
|
||||
%{krb5prefix}/sbin/gss-server
|
||||
%{krb5prefix}/sbin/uuserver
|
||||
%{_sbindir}/sim_server
|
||||
%{_sbindir}/gss-server
|
||||
%{_sbindir}/uuserver
|
||||
|
||||
%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
|
||||
- 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
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
RETVAL=0
|
||||
prog="Kerberos 5 KDC"
|
||||
krb5kdc=/usr/kerberos/sbin/krb5kdc
|
||||
krb5kdc=/usr/sbin/krb5kdc
|
||||
|
||||
# Shell functions to cut down on useless shell instances.
|
||||
start() {
|
||||
|
8
sources
8
sources
@ -1,3 +1,5 @@
|
||||
9d79efba57423008e65efc5ff75405d6 krb5-1.7.1.tar.gz
|
||||
2197cc65ed90f00f92e5a27bd514b53b krb5-1.7.1.tar.gz.asc
|
||||
309139729539cf5ef403bb0dc7ae455b krb5-1.7.1-pdf.tar.gz
|
||||
a3391a739009efa9734db720d34f4c07 krb5-1.8.tar.gz
|
||||
f923ec08f24df9e5a284be74895a6daa krb5-1.8.tar.gz.asc
|
||||
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