summaryrefslogtreecommitdiffstats
path: root/src/clients
diff options
context:
space:
mode:
authorChris Provenzano <proven@mit.edu>1995-01-13 22:05:49 +0000
committerChris Provenzano <proven@mit.edu>1995-01-13 22:05:49 +0000
commit7a3dfafc7c240ec64248269f97f25fed1009e362 (patch)
treeb31628fd34740ee0f0bd068df615759084eaa6bb /src/clients
parentef4a40eef2b466b34a015a9419dccee2a9fd5ee4 (diff)
downloadkrb5-7a3dfafc7c240ec64248269f97f25fed1009e362.tar.gz
krb5-7a3dfafc7c240ec64248269f97f25fed1009e362.tar.xz
krb5-7a3dfafc7c240ec64248269f97f25fed1009e362.zip
Removed all references to DECLARG and OLDDECLARG.
Added krb5_context to all krb5_*() routines. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4815 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/clients')
-rw-r--r--src/clients/kdestroy/ChangeLog4
-rw-r--r--src/clients/kdestroy/kdestroy.c9
-rw-r--r--src/clients/kinit/ChangeLog4
-rw-r--r--src/clients/kinit/kinit.c57
-rw-r--r--src/clients/klist/ChangeLog4
-rw-r--r--src/clients/klist/klist.c52
-rw-r--r--src/clients/ksu/ChangeLog4
-rw-r--r--src/clients/ksu/authorization.c40
-rw-r--r--src/clients/ksu/ccache.c174
-rw-r--r--src/clients/ksu/heuristic.c76
-rw-r--r--src/clients/ksu/krb_auth_su.c192
-rw-r--r--src/clients/ksu/ksu.h1
-rw-r--r--src/clients/ksu/main.c105
13 files changed, 403 insertions, 319 deletions
diff --git a/src/clients/kdestroy/ChangeLog b/src/clients/kdestroy/ChangeLog
index 1c4727d3f..66937e824 100644
--- a/src/clients/kdestroy/ChangeLog
+++ b/src/clients/kdestroy/ChangeLog
@@ -1,3 +1,7 @@
+Fri Jan 13 15:23:47 1995 Chris Provenzano (proven@mit.edu)
+
+ * Added krb5_context to all krb5_routines
+
Mon Oct 3 19:14:48 1994 Theodore Y. Ts'o (tytso@dcl)
* Makefile.in: Use $(srcdir) to find manual page for make install.
diff --git a/src/clients/kdestroy/kdestroy.c b/src/clients/kdestroy/kdestroy.c
index 9db29c698..25f335560 100644
--- a/src/clients/kdestroy/kdestroy.c
+++ b/src/clients/kdestroy/kdestroy.c
@@ -39,6 +39,7 @@ main(argc, argv)
int argc;
char **argv;
{
+ krb5_context kcontext;
int c;
krb5_ccache cache = NULL;
char *cache_name = NULL;
@@ -46,7 +47,7 @@ main(argc, argv)
int errflg=0;
int quiet = 0;
- krb5_init_ets();
+ krb5_init_ets(kcontext);
if (strrchr(argv[0], '/'))
argv[0] = strrchr(argv[0], '/')+1;
@@ -60,7 +61,7 @@ main(argc, argv)
if (cache == NULL) {
cache_name = optarg;
- code = krb5_cc_resolve (cache_name, &cache);
+ code = krb5_cc_resolve (kcontext, cache_name, &cache);
if (code != 0) {
com_err (argv[0], code, "while resolving %s", cache_name);
errflg++;
@@ -86,13 +87,13 @@ main(argc, argv)
}
if (cache == NULL) {
- if (code = krb5_cc_default(&cache)) {
+ if (code = krb5_cc_default(kcontext, &cache)) {
com_err(argv[0], code, "while getting default ccache");
exit(1);
}
}
- code = krb5_cc_destroy (cache);
+ code = krb5_cc_destroy (kcontext, cache);
if (code != 0) {
com_err (argv[0], code, "while destroying cache");
if (quiet)
diff --git a/src/clients/kinit/ChangeLog b/src/clients/kinit/ChangeLog
index e1f302b0a..02a935cbb 100644
--- a/src/clients/kinit/ChangeLog
+++ b/src/clients/kinit/ChangeLog
@@ -1,3 +1,7 @@
+Fri Jan 13 15:23:47 1995 Chris Provenzano (proven@mit.edu)
+
+ * Added krb5_context to all krb5_routines
+
Mon Oct 3 19:14:30 1994 Theodore Y. Ts'o (tytso@dcl)
* Makefile.in: Use $(srcdir) to find manual page for make install.
diff --git a/src/clients/kinit/kinit.c b/src/clients/kinit/kinit.c
index 56b7e2d8d..bf298033a 100644
--- a/src/clients/kinit/kinit.c
+++ b/src/clients/kinit/kinit.c
@@ -69,6 +69,7 @@ main(argc, argv)
int argc;
char **argv;
{
+ krb5_context kcontext;
krb5_ccache ccache = NULL;
char *cache_name = NULL; /* -f option */
char *keytab_name = NULL; /* -t option */
@@ -92,7 +93,7 @@ main(argc, argv)
int i;
char password[255], *client_name, prompt[255];
- krb5_init_ets();
+ krb5_init_ets(kcontext);
if (strrchr(argv[0], '/'))
argv[0] = strrchr(argv[0], '/')+1;
@@ -120,7 +121,7 @@ main(argc, argv)
if (keytab == NULL) {
keytab_name = optarg;
- code = krb5_kt_resolve(keytab_name, &keytab);
+ code = krb5_kt_resolve(kcontext, keytab_name, &keytab);
if (code != 0) {
com_err(argv[0], code, "resolving keytab %s",
keytab_name);
@@ -142,7 +143,7 @@ main(argc, argv)
if (ccache == NULL) {
cache_name = optarg;
- code = krb5_cc_resolve (cache_name, &ccache);
+ code = krb5_cc_resolve (kcontext, cache_name, &ccache);
if (code != 0) {
com_err (argv[0], code, "resolving ccache %s",
cache_name);
@@ -166,7 +167,7 @@ main(argc, argv)
}
if (ccache == NULL) {
- if (code = krb5_cc_default(&ccache)) {
+ if (code = krb5_cc_default(kcontext, &ccache)) {
com_err(argv[0], code, "while getting default ccache");
exit(1);
}
@@ -175,7 +176,7 @@ main(argc, argv)
if (optind != argc-1) { /* No principal name specified */
if (use_keytab) {
/* Use the default host/service name */
- code = krb5_sname_to_principal(NULL, NULL,
+ code = krb5_sname_to_principal(kcontext, NULL, NULL,
KRB5_NT_SRV_HST, &me);
if (code) {
com_err(argv[0], code,
@@ -184,12 +185,12 @@ main(argc, argv)
}
} else {
/* Get default principal from cache if one exists */
- code = krb5_cc_get_principal(ccache, &me);
+ code = krb5_cc_get_principal(kcontext, ccache, &me);
if (code) {
/* Else search passwd file for client */
pw = getpwuid((int) getuid());
if (pw) {
- if (code = krb5_parse_name (pw->pw_name, &me)) {
+ if (code = krb5_parse_name (kcontext, pw->pw_name, &me)) {
com_err (argv[0], code, "when parsing name %s",
pw->pw_name);
exit(1);
@@ -202,17 +203,17 @@ main(argc, argv)
}
}
} /* Use specified name */
- else if (code = krb5_parse_name (argv[optind], &me)) {
+ else if (code = krb5_parse_name (kcontext, argv[optind], &me)) {
com_err (argv[0], code, "when parsing name %s",argv[optind]);
exit(1);
}
- if (code = krb5_unparse_name(me, &client_name)) {
+ if (code = krb5_unparse_name(kcontext, me, &client_name)) {
com_err (argv[0], code, "when unparsing name");
exit(1);
}
- code = krb5_cc_initialize (ccache, me);
+ code = krb5_cc_initialize (kcontext, ccache, me);
if (code != 0) {
com_err (argv[0], code, "when initializing cache %s",
cache_name?cache_name:"");
@@ -223,12 +224,12 @@ main(argc, argv)
my_creds.client = me;
- if (code = krb5_build_principal_ext(&server,
- krb5_princ_realm(me)->length,
- krb5_princ_realm(me)->data,
+ if (code = krb5_build_principal_ext(kcontext, &server,
+ krb5_princ_realm(kcontext, me)->length,
+ krb5_princ_realm(kcontext, me)->data,
tgtname.length, tgtname.data,
- krb5_princ_realm(me)->length,
- krb5_princ_realm(me)->data,
+ krb5_princ_realm(kcontext, me)->length,
+ krb5_princ_realm(kcontext, me)->data,
0)) {
com_err(argv[0], code, "while building server name");
exit(1);
@@ -241,7 +242,7 @@ main(argc, argv)
com_err (argv[0], code, "when getting my address");
exit(1);
}
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(kcontext, &now)) {
com_err(argv[0], code, "while getting time of day");
exit(1);
}
@@ -258,17 +259,18 @@ main(argc, argv)
pwsize = sizeof(password);
- code = krb5_read_password(prompt, 0, password, &pwsize);
+ code = krb5_read_password(kcontext, prompt, 0, password, &pwsize);
if (code || pwsize == 0) {
fprintf(stderr, "Error while reading password for '%s'\n",
client_name);
memset(password, 0, sizeof(password));
- krb5_free_addresses(my_addresses);
+ krb5_free_addresses(kcontext, my_addresses);
exit(1);
}
if (preauth_type > 0) {
- code = krb5_get_in_tkt_with_password(options, my_addresses,
+ code = krb5_get_in_tkt_with_password(kcontext, options,
+ my_addresses,
preauth_type,
ETYPE_DES_CBC_CRC,
KEYTYPE_DES,
@@ -277,7 +279,8 @@ main(argc, argv)
&my_creds, 0);
} else {
for (i=0; preauth_search_list[i] >= 0; i++) {
- code = krb5_get_in_tkt_with_password(options, my_addresses,
+ code = krb5_get_in_tkt_with_password(kcontext, options,
+ my_addresses,
preauth_search_list[i],
ETYPE_DES_CBC_CRC,
KEYTYPE_DES,
@@ -292,7 +295,7 @@ main(argc, argv)
memset(password, 0, sizeof(password));
} else {
if (keytab != NULL) {
- code = krb5_kt_get_entry(keytab, my_creds.client, 0,
+ code = krb5_kt_get_entry(kcontext, keytab, my_creds.client, 0,
&kt_ent);
if (code) {
com_err(argv[0], code, "reading keytab entry %s",
@@ -302,14 +305,16 @@ main(argc, argv)
}
if (preauth_type > 0) {
- code = krb5_get_in_tkt_with_skey(options, my_addresses,
+ code = krb5_get_in_tkt_with_skey(kcontext, options,
+ my_addresses,
preauth_type,
ETYPE_DES_CBC_CRC,
keytab ? &kt_ent.key : NULL,
ccache, &my_creds, 0);
} else {
for (i=0; preauth_search_list[i] >= 0; i++) {
- code = krb5_get_in_tkt_with_skey(options, my_addresses,
+ code = krb5_get_in_tkt_with_skey(kcontext, options,
+ my_addresses,
preauth_search_list[i],
ETYPE_DES_CBC_CRC,
keytab ? &kt_ent.key : NULL,
@@ -321,11 +326,11 @@ main(argc, argv)
}
if (keytab != NULL)
- krb5_kt_free_entry(&kt_ent);
+ krb5_kt_free_entry(kcontext, &kt_ent);
}
- krb5_free_principal(server);
- krb5_free_addresses(my_addresses);
+ krb5_free_principal(kcontext, server);
+ krb5_free_addresses(kcontext, my_addresses);
if (code) {
if (code == KRB5KRB_AP_ERR_BAD_INTEGRITY)
diff --git a/src/clients/klist/ChangeLog b/src/clients/klist/ChangeLog
index fe548fae5..5ae2f43a6 100644
--- a/src/clients/klist/ChangeLog
+++ b/src/clients/klist/ChangeLog
@@ -1,3 +1,7 @@
+Fri Jan 13 15:23:47 1995 Chris Provenzano (proven@mit.edu)
+
+ * Added krb5_context to all krb5_routines
+
Mon Oct 3 19:14:09 1994 Theodore Y. Ts'o (tytso@dcl)
* Makefile.in: Use $(srcdir) to find manual page for make install.
diff --git a/src/clients/klist/klist.c b/src/clients/klist/klist.c
index 188c406a0..e836af8e8 100644
--- a/src/clients/klist/klist.c
+++ b/src/clients/klist/klist.c
@@ -39,7 +39,9 @@ char *defname;
time_t now;
void
-show_credential PROTOTYPE((krb5_creds *));
+show_credential
+ PROTOTYPE((krb5_context,
+ krb5_creds *));
void
main(argc, argv)
@@ -55,8 +57,9 @@ main(argc, argv)
char *cache_name;
krb5_principal princ;
krb5_flags flags;
+ krb5_context kcontext;
- krb5_init_ets();
+ krb5_init_ets(kcontext);
time(&now);
@@ -74,7 +77,7 @@ main(argc, argv)
if (cache == NULL) {
cache_name = optarg;
- code = krb5_cc_resolve (cache_name, &cache);
+ code = krb5_cc_resolve (kcontext, cache_name, &cache);
if (code != 0) {
com_err(progname, code, "while resolving %s", cache_name);
errflg++;
@@ -99,50 +102,50 @@ main(argc, argv)
exit(2);
}
if (cache == NULL) {
- if (code = krb5_cc_default(&cache)) {
+ if (code = krb5_cc_default(kcontext, &cache)) {
com_err(progname, code, "while getting default ccache");
exit(1);
}
}
flags = 0; /* turns off OPENCLOSE mode */
- if (code = krb5_cc_set_flags(cache, flags)) {
+ if (code = krb5_cc_set_flags(kcontext, cache, flags)) {
if (code == ENOENT) {
com_err(progname, code, "(ticket cache %s)",
- krb5_cc_get_name(cache));
+ krb5_cc_get_name(kcontext, cache));
} else
com_err(progname, code,
"while setting cache flags (ticket cache %s)",
- krb5_cc_get_name(cache));
+ krb5_cc_get_name(kcontext, cache));
exit(1);
}
- if (code = krb5_cc_get_principal(cache, &princ)) {
+ if (code = krb5_cc_get_principal(kcontext, cache, &princ)) {
com_err(progname, code, "while retrieving principal name");
exit(1);
}
- if (code = krb5_unparse_name(princ, &defname)) {
+ if (code = krb5_unparse_name(kcontext, princ, &defname)) {
com_err(progname, code, "while unparsing principal name");
exit(1);
}
printf("Ticket cache: %s\nDefault principal: %s\n\n",
- krb5_cc_get_name(cache), defname);
- if (code = krb5_cc_start_seq_get(cache, &cur)) {
+ krb5_cc_get_name(kcontext, cache), defname);
+ if (code = krb5_cc_start_seq_get(kcontext, cache, &cur)) {
com_err(progname, code, "while starting to retrieve tickets");
exit(1);
}
fputs(" Valid starting Expires Service principal\n",
stdout);
- while (!(code = krb5_cc_next_cred(cache, &cur, &creds))) {
- show_credential(&creds);
- krb5_free_cred_contents(&creds);
+ while (!(code = krb5_cc_next_cred(kcontext, cache, &cur, &creds))) {
+ show_credential(kcontext, &creds);
+ krb5_free_cred_contents(kcontext, &creds);
}
if (code == KRB5_CC_END) {
- if (code = krb5_cc_end_seq_get(cache, &cur)) {
+ if (code = krb5_cc_end_seq_get(kcontext, cache, &cur)) {
com_err(progname, code, "while finishing ticket retrieval");
exit(1);
}
flags = KRB5_TC_OPENCLOSE; /* turns on OPENCLOSE mode */
- if (code = krb5_cc_set_flags(cache, flags)) {
+ if (code = krb5_cc_set_flags(kcontext, cache, flags)) {
com_err(progname, code, "while closing ccache");
exit(1);
}
@@ -153,8 +156,9 @@ main(argc, argv)
}
}
-char *flags_string(cred)
-register krb5_creds *cred;
+char *
+flags_string(cred)
+ register krb5_creds *cred;
{
static char buf[32];
int i = 0;
@@ -188,7 +192,8 @@ register krb5_creds *cred;
static char *Month_names[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
-void printtime(tv)
+void
+printtime(tv)
time_t tv;
{
struct tm *stime;
@@ -204,19 +209,20 @@ void printtime(tv)
}
void
-show_credential(cred)
-register krb5_creds *cred;
+show_credential(kcontext, cred)
+ krb5_context kcontext;
+ register krb5_creds *cred;
{
krb5_error_code retval;
char *name, *sname, *flags;
int first = 1;
- retval = krb5_unparse_name(cred->client, &name);
+ retval = krb5_unparse_name(kcontext, cred->client, &name);
if (retval) {
com_err(progname, retval, "while unparsing client name");
return;
}
- retval = krb5_unparse_name(cred->server, &sname);
+ retval = krb5_unparse_name(kcontext, cred->server, &sname);
if (retval) {
com_err(progname, retval, "while unparsing server name");
free(name);
diff --git a/src/clients/ksu/ChangeLog b/src/clients/ksu/ChangeLog
index 49208dccb..97123c9b4 100644
--- a/src/clients/ksu/ChangeLog
+++ b/src/clients/ksu/ChangeLog
@@ -1,3 +1,7 @@
+Fri Jan 13 15:23:47 1995 Chris Provenzano (proven@mit.edu)
+
+ * Added krb5_context to all krb5_routines
+
Mon Oct 3 19:15:28 1994 Theodore Y. Ts'o (tytso@dcl)
* Makefile.in: Use $(srcdir) to find manual page for make install.
diff --git a/src/clients/ksu/authorization.c b/src/clients/ksu/authorization.c
index d4a5fc90c..8d0ec90a7 100644
--- a/src/clients/ksu/authorization.c
+++ b/src/clients/ksu/authorization.c
@@ -62,9 +62,10 @@ return(TRUE);
*
*/
-krb5_error_code krb5_authorization(principal, luser, local_realm_name,
+krb5_error_code krb5_authorization(context, principal, luser, local_realm_name,
cmd, ok, out_fcmd)
/* IN */
+ krb5_context context;
krb5_principal principal;
const char *luser;
char *local_realm_name;
@@ -90,7 +91,7 @@ krb5_error_code krb5_authorization(principal, luser, local_realm_name,
return 0;
}
- if (retval = krb5_unparse_name(principal, &princname)){
+ if (retval = krb5_unparse_name(context, principal, &princname)){
return retval;
}
@@ -196,7 +197,7 @@ krb5_error_code krb5_authorization(principal, luser, local_realm_name,
if (!strcmp(local_realm_name, USE_DEFAULT_REALM_NAME)){
- if (retval = krb5_get_default_realm(&realm)) {
+ if (retval = krb5_get_default_realm(context, &realm)) {
auth_cleanup(k5users_flag,users_fp,
k5login_flag,login_fp, princname);
free(kuser);
@@ -206,8 +207,9 @@ krb5_error_code krb5_authorization(principal, luser, local_realm_name,
}
else{ realm = local_realm_name; }
- if((! _username_an_to_ln(principal,strlen(princname), kuser,
- realm)) && (strcmp(kuser,luser) == 0)){
+ if((! _username_an_to_ln(context, principal, strlen(princname),
+ kuser, realm))
+ && (strcmp(kuser,luser) == 0)){
retbool = TRUE;
}
@@ -734,7 +736,8 @@ return out_ptr;
* null in the DBM datum.size.
********************************************************************/
static krb5_error_code
-_dbm_an_to_ln(aname, lnsize, lname)
+_dbm_an_to_ln(context, aname, lnsize, lname)
+ krb5_context context;
krb5_const_principal aname;
const int lnsize;
char *lname;
@@ -744,7 +747,7 @@ _dbm_an_to_ln(aname, lnsize, lname)
datum key, contents;
char *princ_name;
- if (retval = krb5_unparse_name(aname, &princ_name))
+ if (retval = krb5_unparse_name(context, aname, &princ_name))
return(retval);
key.dptr = princ_name;
key.dsize = strlen(princ_name)+1; /* need to store the NULL for
@@ -783,7 +786,8 @@ _dbm_an_to_ln(aname, lnsize, lname)
************************************************************/
static krb5_error_code
-_username_an_to_ln (aname, lnsize, lname, realm)
+_username_an_to_ln (context, aname, lnsize, lname, realm)
+ krb5_context context;
krb5_const_principal aname;
const int lnsize;
char *lname;
@@ -792,19 +796,19 @@ _username_an_to_ln (aname, lnsize, lname, realm)
krb5_error_code retval;
int realm_length;
- realm_length = krb5_princ_realm(aname)->length;
+ realm_length = krb5_princ_realm(context, aname)->length;
if ((realm_length != strlen(realm)) ||
- (memcmp(realm, krb5_princ_realm(aname)->data, realm_length))) {
+ (memcmp(realm, krb5_princ_realm(context, aname)->data, realm_length))) {
return KRB5_LNAME_NOTRANS;
}
- if (krb5_princ_size(aname) != 1) {
- if (krb5_princ_size(aname) == 2 ) {
+ if (krb5_princ_size(context, aname) != 1) {
+ if (krb5_princ_size(context, aname) == 2 ) {
/* Check to see if 2nd component is the local realm. */
- if ( strncmp(krb5_princ_component(aname,1)->data,realm,
+ if ( strncmp(krb5_princ_component(context, aname,1)->data,realm,
realm_length) ||
- realm_length != krb5_princ_component(aname,1)->length)
+ realm_length != krb5_princ_component(context, aname,1)->length)
return KRB5_LNAME_NOTRANS;
}
else
@@ -813,12 +817,12 @@ _username_an_to_ln (aname, lnsize, lname, realm)
return KRB5_LNAME_NOTRANS;
}
- strncpy(lname, krb5_princ_component(aname,0)->data,
- min(krb5_princ_component(aname,0)->length,lnsize));
- if (lnsize < krb5_princ_component(aname,0)->length ) {
+ strncpy(lname, krb5_princ_component(context, aname,0)->data,
+ min(krb5_princ_component(context, aname,0)->length,lnsize));
+ if (lnsize < krb5_princ_component(context, aname,0)->length ) {
retval = KRB5_CONFIG_NOTENUFSPACE;
} else {
- lname[krb5_princ_component(aname,0)->length] = '\0';
+ lname[krb5_princ_component(context, aname,0)->length] = '\0';
retval = 0;
}
return retval;
diff --git a/src/clients/ksu/ccache.c b/src/clients/ksu/ccache.c
index 33362b5c2..20bcbb241 100644
--- a/src/clients/ksu/ccache.c
+++ b/src/clients/ksu/ccache.c
@@ -43,9 +43,10 @@ void show_credential();
with k5 beta 3 release.
*/
-krb5_error_code krb5_ccache_copy (cc_def, cc_other_tag, primary_principal,
- cc_out, stored)
+krb5_error_code krb5_ccache_copy (context, cc_def, cc_other_tag,
+ primary_principal, cc_out, stored)
/* IN */
+ krb5_context context;
krb5_ccache cc_def;
char *cc_other_tag;
krb5_principal primary_principal;
@@ -64,34 +65,35 @@ struct stat st_temp;
cc_other = (krb5_ccache *) calloc(1, sizeof (krb5_ccache));
- if( retval = krb5_cc_resolve(cc_other_tag, cc_other)){
+ if( retval = krb5_cc_resolve(context, cc_other_tag, cc_other)){
com_err (prog_name, retval, "resolving ccache %s",
cc_other_tag);
return retval;
}
- cc_def_name = krb5_cc_get_name(cc_def);
- cc_other_name = krb5_cc_get_name(*cc_other);
+ 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(retval = krb5_get_nonexp_tkts( cc_def, &cc_def_creds_arr)){
+ if(retval = krb5_get_nonexp_tkts(context, cc_def, &cc_def_creds_arr)){
return retval;
}
}
- *stored = krb5_find_princ_in_cred_list(cc_def_creds_arr,primary_principal);
+ *stored = krb5_find_princ_in_cred_list(context, cc_def_creds_arr,
+ primary_principal);
- if (retval = krb5_cc_initialize(*cc_other, primary_principal)){
+ if (retval = krb5_cc_initialize(context, *cc_other, primary_principal)){
return retval;
}
- retval = krb5_store_all_creds(* cc_other,
- cc_def_creds_arr, cc_other_creds_arr);
+ retval = krb5_store_all_creds(context, * cc_other, cc_def_creds_arr,
+ cc_other_creds_arr);
if (cc_def_creds_arr){
while (cc_def_creds_arr[i]){
- krb5_free_creds(cc_def_creds_arr[i]);
+ krb5_free_creds(context, cc_def_creds_arr[i]);
i++;
}
}
@@ -100,7 +102,7 @@ struct stat st_temp;
if(cc_other_creds_arr){
while (cc_other_creds_arr[i]){
- krb5_free_creds(cc_other_creds_arr[i]);
+ krb5_free_creds(context, cc_other_creds_arr[i]);
i++;
}
}
@@ -110,8 +112,8 @@ struct stat st_temp;
}
-
-krb5_error_code krb5_store_all_creds(cc, creds_def, creds_other)
+krb5_error_code krb5_store_all_creds(context, cc, creds_def, creds_other)
+ krb5_context context;
krb5_ccache cc;
krb5_creds **creds_def;
krb5_creds **creds_other;
@@ -136,7 +138,8 @@ krb5_boolean cmp;
if (temp_creds){
while(temp_creds[i]){
- if (retval= krb5_cc_store_cred(cc, temp_creds[i])){
+ if (retval= krb5_cc_store_cred(context, cc,
+ temp_creds[i])){
return retval;
}
i++;
@@ -157,7 +160,7 @@ krb5_boolean cmp;
j++;
}
if (cmp == FALSE){
- if (retval= krb5_cc_store_cred(cc,
+ if (retval= krb5_cc_store_cred(context, cc,
creds_other[i])){
return retval;
}
@@ -167,7 +170,8 @@ krb5_boolean cmp;
i=0;
while(creds_def[i]){
- if (retval= krb5_cc_store_cred(cc, creds_def[i])){
+ if (retval= krb5_cc_store_cred(context, cc,
+ creds_def[i])){
return retval;
}
i++;
@@ -178,16 +182,17 @@ krb5_boolean cmp;
return 0;
}
-krb5_boolean compare_creds(cred1, cred2)
+krb5_boolean compare_creds(context, cred1, cred2)
+ krb5_context context;
krb5_creds *cred1;
krb5_creds *cred2;
{
krb5_boolean retval;
- retval = krb5_principal_compare (cred1->client, cred2->client);
+ retval = krb5_principal_compare (context, cred1->client, cred2->client);
if (retval == TRUE)
- retval = krb5_principal_compare (cred1->server, cred2->server);
+ retval = krb5_principal_compare (context, cred1->server, cred2->server);
return retval;
}
@@ -195,7 +200,8 @@ krb5_boolean retval;
-krb5_error_code krb5_get_nonexp_tkts(cc, creds_array)
+krb5_error_code krb5_get_nonexp_tkts(context, cc, creds_array)
+ krb5_context context;
krb5_ccache cc;
krb5_creds ***creds_array;
{
@@ -217,13 +223,13 @@ int chunk_count = 1;
memset((char *) &creds, 0, sizeof(creds));
/* initialize the cursor */
- if (retval = krb5_cc_start_seq_get(cc, &cur)) {
+ if (retval = krb5_cc_start_seq_get(context, cc, &cur)) {
return retval;
}
- while (!(retval = krb5_cc_next_cred(cc, &cur, &creds))){
+ while (!(retval = krb5_cc_next_cred(context, cc, &cur, &creds))){
- if(retval = krb5_check_exp(creds.times)){
+ if(retval = krb5_check_exp(context, creds.times)){
if (retval != KRB5KRB_AP_ERR_TKT_EXPIRED){
return retval;
}
@@ -236,7 +242,8 @@ int chunk_count = 1;
}
else { /* these credentials didn't expire */
- if (retval = krb5_copy_creds(&creds, &temp_creds[count])){
+ if (retval = krb5_copy_creds(context, &creds,
+ &temp_creds[count])){
return retval;
}
count ++;
@@ -256,7 +263,7 @@ int chunk_count = 1;
*creds_array = temp_creds;
if (retval == KRB5_CC_END) {
- retval = krb5_cc_end_seq_get(cc, &cur);
+ retval = krb5_cc_end_seq_get(context, cc, &cur);
}
return retval;
@@ -266,13 +273,14 @@ int chunk_count = 1;
extern krb5_deltat krb5_clockskew;
-krb5_error_code krb5_check_exp(tkt_time)
+krb5_error_code krb5_check_exp(context, tkt_time)
+ krb5_context context;
krb5_ticket_times tkt_time;
{
krb5_error_code retval =0;
krb5_timestamp currenttime;
- if (retval = krb5_timeofday (&currenttime)){
+ if (retval = krb5_timeofday (context, &currenttime)){
return retval;
}
if (auth_debug){
@@ -432,7 +440,8 @@ krb5_get_login_princ(luser, princ_list)
void
-show_credential(cred, cc)
+show_credential(context, cred, cc)
+ krb5_context context;
krb5_creds *cred;
krb5_ccache cc;
{
@@ -443,23 +452,23 @@ show_credential(cred, cc)
char * defname;
int show_flags =1;
- retval = krb5_unparse_name(cred->client, &name);
+ retval = krb5_unparse_name(context, cred->client, &name);
if (retval) {
com_err(prog_name, retval, "while unparsing client name");
return;
}
- retval = krb5_unparse_name(cred->server, &sname);
+ retval = krb5_unparse_name(context, cred->server, &sname);
if (retval) {
com_err(prog_name, retval, "while unparsing server name");
free(name);
return;
}
- if (retval = krb5_cc_get_principal(cc, &princ)) {
+ if (retval = krb5_cc_get_principal(context, cc, &princ)) {
com_err(prog_name, retval, "while retrieving principal name");
return;
}
- if (retval = krb5_unparse_name(princ, &defname)) {
+ if (retval = krb5_unparse_name(context, princ, &defname)) {
com_err(prog_name, retval, "while unparsing principal name");
return;
}
@@ -509,7 +518,8 @@ int gen_sym(){
return i;
}
-krb5_error_code krb5_ccache_overwrite(ccs, cct, primary_principal)
+krb5_error_code krb5_ccache_overwrite(context, ccs, cct, primary_principal)
+ krb5_context context;
krb5_ccache ccs;
krb5_ccache cct;
krb5_principal primary_principal;
@@ -522,33 +532,32 @@ krb5_creds ** ccs_creds_arr = NULL;
int i=0;
struct stat st_temp;
- ccs_name = krb5_cc_get_name(ccs);
- cct_name = krb5_cc_get_name(cct);
+ ccs_name = krb5_cc_get_name(context, ccs);
+ cct_name = krb5_cc_get_name(context, cct);
if ( ! stat(ccs_name, &st_temp)){
- if(retval = krb5_get_nonexp_tkts( ccs, &ccs_creds_arr)){
+ if(retval = krb5_get_nonexp_tkts(context, ccs, &ccs_creds_arr)){
return retval;
}
}
if ( ! stat(cct_name, &st_temp)){
- if (retval = krb5_cc_get_principal(cct, &temp_principal)){
+ if (retval = krb5_cc_get_principal(context, cct, &temp_principal)){
return retval;
}
}else{
temp_principal = primary_principal;
}
- if (retval = krb5_cc_initialize(cct, temp_principal)){
+ if (retval = krb5_cc_initialize(context, cct, temp_principal)){
return retval;
}
- retval = krb5_store_all_creds(cct,
- ccs_creds_arr, NULL);
+ retval = krb5_store_all_creds(context, cct, ccs_creds_arr, NULL);
if (ccs_creds_arr){
while (ccs_creds_arr[i]){
- krb5_free_creds(ccs_creds_arr[i]);
+ krb5_free_creds(context, ccs_creds_arr[i]);
i++;
}
}
@@ -556,8 +565,9 @@ struct stat st_temp;
return retval;
}
-krb5_error_code krb5_store_some_creds(cc, creds_def, creds_other, prst,
+krb5_error_code krb5_store_some_creds(context, cc, creds_def, creds_other, prst,
stored)
+ krb5_context context;
krb5_ccache cc;
krb5_creds **creds_def;
krb5_creds **creds_other;
@@ -583,10 +593,12 @@ krb5_boolean temp_stored = FALSE;
if (temp_creds){
while(temp_creds[i]){
- if (krb5_principal_compare( temp_creds[i]->client,
- prst)== TRUE){
+ if (krb5_principal_compare(context,
+ temp_creds[i]->client,
+ prst)== TRUE) {
- if(retval=krb5_cc_store_cred(cc,temp_creds[i])){
+ if (retval = krb5_cc_store_cred(context,
+ cc,temp_creds[i])){
return retval;
}
temp_stored = TRUE;
@@ -614,8 +626,9 @@ but I had to do it this way, since cc_remove function did not come
with k5 beta 3 release.
************************************************************************/
-krb5_error_code krb5_ccache_copy_restricted (cc_def, cc_other_tag, prst,
- cc_out, stored)
+krb5_error_code krb5_ccache_copy_restricted (context, cc_def, cc_other_tag,
+ prst, cc_out, stored)
+ krb5_context context;
krb5_ccache cc_def;
char *cc_other_tag;
krb5_principal prst;
@@ -635,34 +648,34 @@ struct stat st_temp;
cc_other = (krb5_ccache *) calloc(1, sizeof (krb5_ccache));
- if( retval = krb5_cc_resolve(cc_other_tag, cc_other)){
+ if( retval = krb5_cc_resolve(context, cc_other_tag, cc_other)){
com_err (prog_name, retval, "resolving ccache %s",
cc_other_tag);
return retval;
}
- cc_def_name = krb5_cc_get_name(cc_def);
- cc_other_name = krb5_cc_get_name(*cc_other);
+ 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(retval = krb5_get_nonexp_tkts( cc_def, &cc_def_creds_arr)){
+ if(retval = krb5_get_nonexp_tkts(context, cc_def, &cc_def_creds_arr)){
return retval;
}
}
- if (retval = krb5_cc_initialize(*cc_other, prst)){
+ if (retval = krb5_cc_initialize(context, *cc_other, prst)){
return retval;
}
- retval = krb5_store_some_creds(* cc_other,
+ retval = krb5_store_some_creds(context, * cc_other,
cc_def_creds_arr, cc_other_creds_arr, prst, stored);
if (cc_def_creds_arr){
while (cc_def_creds_arr[i]){
- krb5_free_creds(cc_def_creds_arr[i]);
+ krb5_free_creds(context, cc_def_creds_arr[i]);
i++;
}
}
@@ -671,7 +684,7 @@ struct stat st_temp;
if(cc_other_creds_arr){
while (cc_other_creds_arr[i]){
- krb5_free_creds(cc_other_creds_arr[i]);
+ krb5_free_creds(context, cc_other_creds_arr[i]);
i++;
}
}
@@ -687,7 +700,8 @@ not available with beta3 release.
************************************************************/
-krb5_error_code krb5_ccache_refresh (cc)
+krb5_error_code krb5_ccache_refresh (context, cc)
+ krb5_context context;
krb5_ccache cc;
{
@@ -698,7 +712,7 @@ krb5_creds ** cc_creds_arr = NULL;
char * cc_name;
struct stat st_temp;
- cc_name = krb5_cc_get_name(cc);
+ cc_name = krb5_cc_get_name(context, cc);
if ( ! stat(cc_name, &st_temp)){
@@ -706,26 +720,25 @@ struct stat st_temp;
fprintf(stderr,"Refreshing cache %s\n", cc_name);
}
- if(retval = krb5_get_nonexp_tkts( cc, &cc_creds_arr)){
+ if(retval = krb5_get_nonexp_tkts(context, cc, &cc_creds_arr)){
return retval;
}
- if (retval = krb5_cc_get_principal(cc, &temp_principal)){
+ if (retval = krb5_cc_get_principal(context, cc, &temp_principal)){
return retval;
}
- if (retval = krb5_cc_initialize(cc, temp_principal)){
+ if (retval = krb5_cc_initialize(context, cc, temp_principal)){
return retval;
}
- if (retval = krb5_store_all_creds(cc,
- cc_creds_arr, NULL)){
+ if (retval = krb5_store_all_creds(context, cc, cc_creds_arr, NULL)){
return retval;
}
if (cc_creds_arr){
while (cc_creds_arr[i]){
- krb5_free_creds(cc_creds_arr[i]);
+ krb5_free_creds(context, cc_creds_arr[i]);
i++;
}
}
@@ -733,7 +746,8 @@ struct stat st_temp;
return 0;
}
-krb5_error_code krb5_ccache_filter (cc, prst)
+krb5_error_code krb5_ccache_filter (context, cc, prst)
+ krb5_context context;
krb5_ccache cc;
krb5_principal prst;
{
@@ -746,7 +760,7 @@ char * cc_name;
krb5_boolean stored;
struct stat st_temp;
- cc_name = krb5_cc_get_name(cc);
+ cc_name = krb5_cc_get_name(context, cc);
if ( ! stat(cc_name, &st_temp)){
@@ -754,25 +768,26 @@ struct stat st_temp;
fprintf(stderr,"puting cache %s through a filter for -z option\n", cc_name);
}
- if(retval = krb5_get_nonexp_tkts( cc, &cc_creds_arr)){
+ if(retval = krb5_get_nonexp_tkts(context, cc, &cc_creds_arr)){
return retval;
}
- if (retval = krb5_cc_get_principal(cc, &temp_principal)){
+ if (retval = krb5_cc_get_principal(context, cc, &temp_principal)){
return retval;
}
- if (retval = krb5_cc_initialize(cc, temp_principal)){
+ if (retval = krb5_cc_initialize(context, cc, temp_principal)){
return retval;
}
- if (retval = krb5_store_some_creds(cc,cc_creds_arr,NULL,prst,&stored)){
+ if (retval = krb5_store_some_creds(context, cc, cc_creds_arr,
+ NULL, prst, &stored)){
return retval;
}
if (cc_creds_arr){
while (cc_creds_arr[i]){
- krb5_free_creds(cc_creds_arr[i]);
+ krb5_free_creds(context, cc_creds_arr[i]);
i++;
}
}
@@ -780,7 +795,8 @@ struct stat st_temp;
return 0;
}
-krb5_boolean krb5_find_princ_in_cred_list (creds_list, princ)
+krb5_boolean krb5_find_princ_in_cred_list (context, creds_list, princ)
+ krb5_context context;
krb5_creds **creds_list;
krb5_principal princ;
{
@@ -790,8 +806,9 @@ krb5_boolean temp_stored = FALSE;
if (creds_list){
while(creds_list[i]){
- if (krb5_principal_compare( creds_list[i]->client,
- princ)== TRUE){
+ if (krb5_principal_compare(context,
+ creds_list[i]->client,
+ princ)== TRUE){
temp_stored = TRUE;
break;
}
@@ -803,7 +820,8 @@ krb5_boolean temp_stored = FALSE;
return temp_stored;
}
-krb5_error_code krb5_find_princ_in_cache (cc, princ, found)
+krb5_error_code krb5_find_princ_in_cache (context, cc, princ, found)
+ krb5_context context;
krb5_ccache cc;
krb5_principal princ;
krb5_boolean *found;
@@ -813,14 +831,14 @@ krb5_creds ** creds_list = NULL;
char * cc_name;
struct stat st_temp;
- cc_name = krb5_cc_get_name(cc);
+ cc_name = krb5_cc_get_name(context, cc);
if ( ! stat(cc_name, &st_temp)){
- if(retval = krb5_get_nonexp_tkts( cc, &creds_list)){
+ if(retval = krb5_get_nonexp_tkts(context, cc, &creds_list)){
return retval;
}
}
- *found = krb5_find_princ_in_cred_list(creds_list, princ);
+ *found = krb5_find_princ_in_cred_list(context, creds_list, princ);
return 0;
}
diff --git a/src/clients/ksu/heuristic.c b/src/clients/ksu/heuristic.c
index 8ca5b7140..8059d50f0 100644
--- a/src/clients/ksu/heuristic.c
+++ b/src/clients/ksu/heuristic.c
@@ -321,7 +321,8 @@ A principal is picked that has the best chance of getting in.
**********************************************************************/
-krb5_error_code get_closest_principal(plist, client, found)
+krb5_error_code get_closest_principal(context, plist, client, found)
+ krb5_context context;
char **plist;
krb5_principal *client;
krb5_boolean *found;
@@ -335,35 +336,35 @@ krb5_boolean got_one;
if (! plist ) return 0;
- cnelem = krb5_princ_size(*client);
+ cnelem = krb5_princ_size(context, *client);
while(plist[i]){
- if (retval = krb5_parse_name(plist[i], &temp_client)){
+ if (retval = krb5_parse_name(context, plist[i], &temp_client)){
return retval;
}
- pnelem = krb5_princ_size(temp_client);
+ pnelem = krb5_princ_size(context, temp_client);
if ( cnelem > pnelem){
i++;
continue;
}
- if (krb5_princ_realm(*client)->length ==
- krb5_princ_realm(temp_client)->length
- && (!memcmp (krb5_princ_realm(*client)->data,
- krb5_princ_realm(temp_client)->data,
- krb5_princ_realm(temp_client)->length))){
+ if (krb5_princ_realm(context, *client)->length ==
+ krb5_princ_realm(context, temp_client)->length
+ && (!memcmp (krb5_princ_realm(context, *client)->data,
+ krb5_princ_realm(context, temp_client)->data,
+ krb5_princ_realm(context, temp_client)->length))){
got_one = TRUE;
for(j =0; j < cnelem; j ++){
krb5_data *p1 =
- krb5_princ_component(*client, j);
+ krb5_princ_component(context, *client, j);
krb5_data *p2 =
- krb5_princ_component(temp_client, j);
+ krb5_princ_component(context, temp_client, j);
if ((p1->length != p2->length) ||
memcmp(p1->data,p2->data,p1->length)){
@@ -373,8 +374,8 @@ krb5_boolean got_one;
}
if (got_one == TRUE){
if(best_client){
- if(krb5_princ_size(best_client) >
- krb5_princ_size(temp_client)){
+ if(krb5_princ_size(context, best_client) >
+ krb5_princ_size(context, temp_client)){
best_client = temp_client;
}
}else{
@@ -398,7 +399,8 @@ find_either_ticket checks to see whether there is a ticket for the
end server or tgt, if neither is there the return FALSE,
*****************************************************************/
-krb5_error_code find_either_ticket (cc, client, end_server, found)
+krb5_error_code find_either_ticket (context, cc, client, end_server, found)
+ krb5_context context;
krb5_ccache cc;
krb5_principal client;
krb5_principal end_server;
@@ -411,7 +413,7 @@ krb5_boolean temp_found = FALSE;
char * cc_source_name;
struct stat st_temp;
-cc_source_name = krb5_cc_get_name(cc);
+cc_source_name = krb5_cc_get_name(context, cc);
if ( ! stat(cc_source_name, &st_temp)){
@@ -421,8 +423,10 @@ if ( ! stat(cc_source_name, &st_temp)){
if (temp_found == FALSE){
- if (retval = krb5_tgtname( krb5_princ_realm (client),
- krb5_princ_realm(client), &kdc_server)){
+ if (retval = krb5_tgtname(context,
+ krb5_princ_realm(context, client),
+ krb5_princ_realm(context, client),
+ &kdc_server)){
return retval ;
}
@@ -443,7 +447,8 @@ if ( ! stat(cc_source_name, &st_temp)){
}
-krb5_error_code find_ticket (cc, client, server, found)
+krb5_error_code find_ticket (context, cc, client, server, found)
+ krb5_context context;
krb5_ccache cc;
krb5_principal client;
krb5_principal server;
@@ -458,18 +463,18 @@ krb5_error_code retval;
memset((char *) &tgtq, 0, sizeof(tgtq));
memset((char *) &tgt, 0, sizeof(tgt));
- if (retval= krb5_copy_principal( client, &tgtq.client)){
+ if (retval= krb5_copy_principal(context, client, &tgtq.client)){
return retval;
}
- if (retval= krb5_copy_principal( server, &tgtq.server)){
+ if (retval= krb5_copy_principal(context, server, &tgtq.server)){
return retval ;
}
- retval = krb5_cc_retrieve_cred(cc, KRB5_TC_MATCH_SRV_NAMEONLY,
+ retval = krb5_cc_retrieve_cred(context, cc, KRB5_TC_MATCH_SRV_NAMEONLY,
&tgtq, &tgt);
- if (! retval) retval = krb5_check_exp(tgt.times);
+ if (! retval) retval = krb5_check_exp(context, tgt.times);
if (retval){
if ((retval != KRB5_CC_NOTFOUND) &&
@@ -489,7 +494,8 @@ krb5_error_code retval;
-krb5_error_code find_princ_in_list (princ, plist, found)
+krb5_error_code find_princ_in_list (context, princ, plist, found)
+ krb5_context context;
krb5_principal princ;
char **plist;
krb5_boolean *found;
@@ -503,7 +509,7 @@ krb5_error_code retval;
if (!plist) return 0;
-if (retval = krb5_unparse_name(princ, &princname)){
+if (retval = krb5_unparse_name(context, princ, &princname)){
return retval;
}
@@ -532,10 +538,11 @@ path_out gets set to ...
***********************************************************************/
-krb5_error_code get_best_princ_for_target(source_uid, target_uid,
+krb5_error_code get_best_princ_for_target(context, source_uid, target_uid,
source_user, target_user,
cc_source, options, cmd,
hostname, client, path_out)
+ krb5_context context;
int source_uid;
int target_uid;
char *source_user;
@@ -570,19 +577,19 @@ if (options->princ){
return 0;
}
-cc_source_name = krb5_cc_get_name(cc_source);
+cc_source_name = krb5_cc_get_name(context, cc_source);
if ( ! stat(cc_source_name, &st_temp)){
- if (retval = krb5_cc_get_principal(cc_source, &cc_def_princ)){
+ if (retval = krb5_cc_get_principal(context, cc_source, &cc_def_princ)){
return retval;
}
}
-if (retval=krb5_parse_name(target_user, &target_client)){
+if (retval=krb5_parse_name(context, target_user, &target_client)){
return retval;
}
-if (retval=krb5_parse_name(source_user, &source_client)){
+if (retval=krb5_parse_name(context, source_user, &source_client)){
return retval;
}
@@ -651,7 +658,7 @@ if ( stat(k5login_path, &tb) && stat(k5users_path, &tb) ){
}
}
-if (retval = krb5_sname_to_principal(hostname, NULL,
+if (retval = krb5_sname_to_principal(context, hostname, NULL,
KRB5_NT_SRV_HST, &end_server)){
return retval;
}
@@ -705,7 +712,7 @@ for (i= 0; i < count; i ++){
i=0;
while (aplist[i]){
- if (retval = krb5_parse_name(aplist[i], &temp_client)){
+ if (retval = krb5_parse_name(context, aplist[i], &temp_client)){
return retval;
}
@@ -721,7 +728,7 @@ while (aplist[i]){
return 0;
}
- krb5_free_principal(temp_client);
+ krb5_free_principal(context, temp_client);
i++;
}
@@ -747,7 +754,8 @@ for (i=0; i < count; i ++){
for (i=0; i < count; i ++){
if (princ_trials[i].p){
- if(retval=krb5_copy_principal(princ_trials[i].p, &temp_client)){
+ if(retval=krb5_copy_principal(context, princ_trials[i].p,
+ &temp_client)){
return retval;
}
@@ -766,7 +774,7 @@ for (i=0; i < count; i ++){
}
return 0;
}
- krb5_free_principal(temp_client);
+ krb5_free_principal(context, temp_client);
}
}
diff --git a/src/clients/ksu/krb_auth_su.c b/src/clients/ksu/krb_auth_su.c
index 4b32dbcc9..d7deb500b 100644
--- a/src/clients/ksu/krb_auth_su.c
+++ b/src/clients/ksu/krb_auth_su.c
@@ -27,6 +27,14 @@
#include "ksu.h"
+static krb5_error_code krb5_verify_tkt_def
+ PROTOTYPE((krb5_context,
+ krb5_principal,
+ krb5_principal,
+ krb5_keyblock *,
+ krb5_data *,
+ krb5_ticket **));
+
void plain_dump_principal ();
krb5_data tgtname = {
@@ -46,8 +54,9 @@ int preauth_search_list[] = {
-krb5_boolean krb5_auth_check(client_pname, hostname, options,
+krb5_boolean krb5_auth_check(context, client_pname, hostname, options,
target_user, cc, path_passwd)
+ krb5_context context;
krb5_principal client_pname;
char *hostname;
opt_info *options;
@@ -70,7 +79,7 @@ krb5_boolean zero_password;
memset((char *) &cred, 0, sizeof(cred));
- if (retval= krb5_copy_principal( client_pname, &client)){
+ if (retval= krb5_copy_principal(context, client_pname, &client)){
com_err(prog_name, retval,"while copying client principal");
return (FALSE) ;
}
@@ -78,11 +87,11 @@ krb5_boolean zero_password;
if (auth_debug)
{ dump_principal("krb5_auth_check: Client principal name", client); }
- if ( retval = krb5_sname_to_principal(hostname, NULL,
+ if ( retval = krb5_sname_to_principal(context, hostname, NULL,
KRB5_NT_SRV_HST, &server)){
com_err(prog_name, retval,
"while creating server %s principal name", hostname);
- krb5_free_principal(client);
+ krb5_free_principal(context, client);
return (FALSE) ;
}
@@ -94,7 +103,7 @@ krb5_boolean zero_password;
/* check if ticket is already in the cache, if it is
then use it.
*/
- if( krb5_fast_auth(client, server, target_user, cc) == TRUE){
+ if( krb5_fast_auth(context, client, server, target_user, cc) == TRUE){
if (auth_debug ){
fprintf (stderr,"Athenticated via fast_auth \n");
}
@@ -103,24 +112,25 @@ krb5_boolean zero_password;
/* check to see if the local tgt is in the cache */
- if (retval= krb5_copy_principal( client, &tgtq.client)){
+ if (retval= krb5_copy_principal(context, client, &tgtq.client)){
com_err(prog_name, retval,"while copying client principal");
return (FALSE) ;
}
- if (retval = krb5_tgtname( krb5_princ_realm (client), krb5_princ_realm(client),
+ if (retval = krb5_tgtname(context, krb5_princ_realm (context, client),
+ krb5_princ_realm(context, client),
&tgtq.server)){
com_err(prog_name, retval, "while creating tgt for local realm");
- krb5_free_principal(client);
- krb5_free_principal(server);
+ krb5_free_principal(context, client);
+ krb5_free_principal(context, server);
return (FALSE) ;
}
if (auth_debug){ dump_principal("local tgt principal name", tgtq.server ); }
- retval = krb5_cc_retrieve_cred(cc, KRB5_TC_MATCH_SRV_NAMEONLY,
+ retval = krb5_cc_retrieve_cred(context, cc, KRB5_TC_MATCH_SRV_NAMEONLY,
&tgtq, &tgt);
- if (! retval) retval = krb5_check_exp(tgt.times);
+ if (! retval) retval = krb5_check_exp(context, tgt.times);
if (retval){
if ((retval != KRB5_CC_NOTFOUND) &&
@@ -141,7 +151,7 @@ krb5_boolean zero_password;
fprintf(stderr," in remotely using an unsecure (non-encrypted) channel. \n");
/*get the ticket granting ticket, via passwd(promt for passwd)*/
- if (krb5_get_tkt_via_passwd (&cc, client, tgtq.server,
+ if (krb5_get_tkt_via_passwd (context, &cc, client, tgtq.server,
options, & zero_password) == FALSE){
return FALSE;
}
@@ -155,17 +165,17 @@ krb5_boolean zero_password;
}
- if (retval= krb5_copy_principal( client, &cred.client)){
+ if (retval= krb5_copy_principal(context, client, &cred.client)){
com_err(prog_name, retval,"while copying client principal");
return (FALSE) ;
}
- if (retval= krb5_copy_principal( server, &cred.server)){
+ if (retval= krb5_copy_principal(context, server, &cred.server)){
com_err(prog_name, retval,"while copying client principal");
return (FALSE) ;
}
- if (retval = krb5_get_cred_from_kdc(cc, &cred, &tgts)){
+ if (retval = krb5_get_cred_from_kdc(context, cc, &cred, &tgts)){
com_err(prog_name, retval, "while geting credentials from kdc");
return (FALSE);
}
@@ -184,23 +194,23 @@ krb5_boolean zero_password;
fprintf(stderr, "krb5_auth_check: went via multiple realms");
}
while (tgts[i]){
- if (retval = krb5_cc_store_cred( cc, tgts[i])){
+ if (retval = krb5_cc_store_cred(context, cc, tgts[i])) {
com_err(prog_name, retval,
"while storing credentials from cross-realm walk");
return (FALSE);
}
i++;
}
- krb5_free_tgt_creds(tgts);
+ krb5_free_tgt_creds(context, tgts);
}
- if (retval = krb5_verify_tkt_def(client, server, &cred.keyblock,
+ if (retval = krb5_verify_tkt_def(context, client, server,&cred.keyblock,
&cred.ticket, &target_tkt)){
com_err(prog_name, retval, "while verifing ticket for server");
return (FALSE);
}
- if (retval = krb5_cc_store_cred( cc, &cred)){
+ if (retval = krb5_cc_store_cred(context, cc, &cred)){
com_err(prog_name, retval,
"While storing credentials");
return (FALSE);
@@ -212,7 +222,8 @@ krb5_boolean zero_password;
/* krb5_fast_auth checks if ticket for the end server is already in
the cache, if it is, we don't need a tgt */
-krb5_boolean krb5_fast_auth(client, server, target_user, cc)
+krb5_boolean krb5_fast_auth(context, client, server, target_user, cc)
+ krb5_context context;
krb5_principal client;
krb5_principal server;
char *target_user;
@@ -226,17 +237,17 @@ krb5_error_code retval;
memset((char *) &tgtq, 0, sizeof(tgtq));
memset((char *) &tgt, 0, sizeof(tgt));
- if (retval= krb5_copy_principal( client, &tgtq.client)){
+ if (retval= krb5_copy_principal(context, client, &tgtq.client)){
com_err(prog_name, retval,"while copying client principal");
return (FALSE) ;
}
- if (retval= krb5_copy_principal( server, &tgtq.server)){
+ if (retval= krb5_copy_principal(context, server, &tgtq.server)){
com_err(prog_name, retval,"while copying client principal");
return (FALSE) ;
}
- if (retval = krb5_cc_retrieve_cred(cc, KRB5_TC_MATCH_SRV_NAMEONLY,
+ if (retval = krb5_cc_retrieve_cred(context, cc, KRB5_TC_MATCH_SRV_NAMEONLY,
&tgtq, &tgt)){
if (auth_debug)
com_err(prog_name, retval,"While Retrieving credentials");
@@ -244,7 +255,7 @@ krb5_error_code retval;
}
- if (retval = krb5_verify_tkt_def(client, server, &tgt.keyblock,
+ if (retval = krb5_verify_tkt_def(context, client, server, &tgt.keyblock,
&tgt.ticket, &target_tkt)){
com_err(prog_name, retval, "while verifing ticket for server");
return (FALSE);
@@ -253,10 +264,11 @@ krb5_error_code retval;
return TRUE;
}
-
-
-krb5_error_code krb5_verify_tkt_def(client, server, cred_ses_key, scr_ticket, clear_ticket)
+static krb5_error_code
+krb5_verify_tkt_def(context, client, server, cred_ses_key,
+ scr_ticket, clear_ticket)
/* IN */
+ krb5_context context;
krb5_principal client;
krb5_principal server;
krb5_keyblock *cred_ses_key;
@@ -275,7 +287,7 @@ krb5_keyblock * tkt_ses_key;
return retval;
}
- if (server && !krb5_principal_compare(server, tkt->server)){
+ if (server && !krb5_principal_compare(context, server, tkt->server)){
return KRB5KRB_AP_WRONG_PRINC;
}
@@ -286,39 +298,39 @@ krb5_keyblock * tkt_ses_key;
}
/* get the default keytab */
- if( retval = krb5_kt_default(&keytabid)){
- krb5_free_ticket(tkt);
+ if( retval = krb5_kt_default(context, &keytabid)){
+ krb5_free_ticket(context, tkt);
return retval;
}
- if (retval = krb5_kt_get_entry(keytabid, server,
- tkt->enc_part.kvno, &ktentry)){
- krb5_free_ticket(tkt);
+ if (retval = krb5_kt_get_entry(context, keytabid, server,
+ tkt->enc_part.kvno, &ktentry)){
+ krb5_free_ticket(context, tkt);
return retval;
}
- krb5_kt_close(keytabid);
+ krb5_kt_close(context, keytabid);
- if ( retval = krb5_copy_keyblock(&ktentry.key, &tkt_key)){
- krb5_free_ticket(tkt);
- krb5_kt_free_entry(&ktentry);
+ if ( retval = krb5_copy_keyblock(context, &ktentry.key, &tkt_key)){
+ krb5_free_ticket(context, tkt);
+ krb5_kt_free_entry(context, &ktentry);
return retval;
}
/* decrypt the ticket */
- if (retval = krb5_decrypt_tkt_part(tkt_key, tkt)) {
- krb5_free_ticket(tkt);
- krb5_kt_free_entry(&ktentry);
- krb5_free_keyblock(tkt_key);
+ if (retval = krb5_decrypt_tkt_part(context, tkt_key, tkt)) {
+ krb5_free_ticket(context, tkt);
+ krb5_kt_free_entry(context, &ktentry);
+ krb5_free_keyblock(context, tkt_key);
return(retval);
}
- if (!krb5_principal_compare(client, tkt->enc_part2->client)) {
- krb5_free_ticket(tkt);
- krb5_kt_free_entry(&ktentry);
- krb5_free_keyblock(tkt_key);
+ if (!krb5_principal_compare(context, client, tkt->enc_part2->client)) {
+ krb5_free_ticket(context, tkt);
+ krb5_kt_free_entry(context, &ktentry);
+ krb5_free_keyblock(context, tkt_key);
return KRB5KRB_AP_ERR_BADMATCH;
}
@@ -336,9 +348,9 @@ krb5_keyblock * tkt_ses_key;
memcmp((char *)cred_ses_key->contents,
(char *)tkt_ses_key->contents, cred_ses_key->length)) {
- krb5_free_ticket(tkt);
- krb5_kt_free_entry(&ktentry);
- krb5_free_keyblock(tkt_key);
+ krb5_free_ticket(context, tkt);
+ krb5_kt_free_entry(context, &ktentry);
+ krb5_free_keyblock(context, tkt_key);
return KRB5KRB_AP_ERR_BAD_INTEGRITY;
}
@@ -348,15 +360,16 @@ krb5_keyblock * tkt_ses_key;
}
*clear_ticket = tkt;
- krb5_kt_free_entry(&ktentry);
- krb5_free_keyblock(tkt_key);
+ krb5_kt_free_entry(context, &ktentry);
+ krb5_free_keyblock(context, tkt_key);
return 0;
}
-krb5_boolean krb5_get_tkt_via_passwd (ccache, client, server,
+krb5_boolean krb5_get_tkt_via_passwd (context, ccache, client, server,
options, zero_password)
+ krb5_context context;
krb5_ccache *ccache;
krb5_principal client;
krb5_principal server;
@@ -375,19 +388,19 @@ krb5_boolean krb5_get_tkt_via_passwd (ccache, client, server,
*zero_password = FALSE;
- if (code = krb5_unparse_name(client, &client_name)) {
+ if (code = krb5_unparse_name(context, client, &client_name)) {
com_err (prog_name, code, "when unparsing name");
return (FALSE);
}
memset((char *)&my_creds, 0, sizeof(my_creds));
- if (code = krb5_copy_principal(client, &my_creds.client)){
+ if (code = krb5_copy_principal(context, client, &my_creds.client)){
com_err (prog_name, code, "while copying principal");
return (FALSE);
}
- if (code = krb5_copy_principal(server, &my_creds.server)){
+ if (code = krb5_copy_principal(context, server, &my_creds.server)){
com_err (prog_name, code, "while copying principal");
return (FALSE);
}
@@ -399,7 +412,7 @@ krb5_boolean krb5_get_tkt_via_passwd (ccache, client, server,
return (FALSE);
}
- if (code = krb5_timeofday(&now)) {
+ if (code = krb5_timeofday(context, &now)) {
com_err(prog_name, code, "while getting time of day");
return (FALSE);
}
@@ -418,12 +431,12 @@ krb5_boolean krb5_get_tkt_via_passwd (ccache, client, server,
pwsize = sizeof(password);
- code = krb5_read_password(prompt, 0, password, &pwsize);
+ code = krb5_read_password(context, prompt, 0, password, &pwsize);
if (code ) {
com_err(prog_name, code, "while reading password for '%s'\n",
client_name);
memset(password, 0, sizeof(password));
- krb5_free_addresses(my_addresses);
+ krb5_free_addresses(context, my_addresses);
return (FALSE);
}
@@ -431,13 +444,13 @@ krb5_boolean krb5_get_tkt_via_passwd (ccache, client, server,
fprintf(stderr, "No password given\n");
*zero_password = TRUE;
memset(password, 0, sizeof(password));
- krb5_free_addresses(my_addresses);
+ krb5_free_addresses(context, my_addresses);
return (FALSE);
}
if (preauth_type > 0) {
- code = krb5_get_in_tkt_with_password(options->opt, my_addresses,
- preauth_type,
+ code = krb5_get_in_tkt_with_password(context, options->opt,
+ my_addresses, preauth_type,
ETYPE_DES_CBC_CRC,
KEYTYPE_DES,
password,
@@ -445,7 +458,8 @@ krb5_boolean krb5_get_tkt_via_passwd (ccache, client, server,
&my_creds, 0);
} else {
for (i=0; preauth_search_list[i] >= 0; i++) {
- code = krb5_get_in_tkt_with_password(options->opt, my_addresses,
+ code = krb5_get_in_tkt_with_password(context, options->opt,
+ my_addresses,
preauth_search_list[i],
ETYPE_DES_CBC_CRC,
KEYTYPE_DES,
@@ -460,7 +474,7 @@ krb5_boolean krb5_get_tkt_via_passwd (ccache, client, server,
memset(password, 0, sizeof(password));
- krb5_free_addresses(my_addresses);
+ krb5_free_addresses(context, my_addresses);
if (code) {
if (code == KRB5KRB_AP_ERR_BAD_INTEGRITY)
@@ -473,27 +487,29 @@ krb5_boolean krb5_get_tkt_via_passwd (ccache, client, server,
}
-void dump_principal (str, p)
+void dump_principal (context, str, p)
+ krb5_context context;
char *str;
krb5_principal p;
{
char * stname;
krb5_error_code retval;
- if (retval = krb5_unparse_name(p, &stname)){
+ if (retval = krb5_unparse_name(context, p, &stname)){
fprintf(stderr," %s while unparsing name \n",
error_message(retval));
}
fprintf(stderr, " %s: %s\n", str, stname );
}
-void plain_dump_principal (p)
+void plain_dump_principal (context, p)
+ krb5_context context;
krb5_principal p;
{
char * stname;
krb5_error_code retval;
- if (retval = krb5_unparse_name(p, &stname)){
+ if (retval = krb5_unparse_name(context, p, &stname)){
fprintf(stderr," %s while unparsing name \n",
error_message(retval));
}
@@ -576,8 +592,9 @@ convtime(p)
return (r);
}
-krb5_error_code get_tgt_via_login_list(server, cc, k5login_plist,
+krb5_error_code get_tgt_via_login_list(context, server, cc, k5login_plist,
client, got_it)
+ krb5_context context;
krb5_principal server;
krb5_ccache cc;
char **k5login_plist;
@@ -597,27 +614,31 @@ krb5_error_code retval =0;
memset((char *) &tgt, 0, sizeof(tgt));
while(k5login_plist[i]){
- if (retval = krb5_parse_name(k5login_plist[i],
+ if (retval = krb5_parse_name(context, k5login_plist[i],
&temp_client)){
return retval;
}
- if (retval= krb5_copy_principal( temp_client, &tgtq.client)){
+ if (retval= krb5_copy_principal(context, temp_client,
+ &tgtq.client)){
return retval ;
}
/* check to see if the local tgt is in the cache */
- if (retval = krb5_tgtname( krb5_princ_realm (temp_client),
- krb5_princ_realm(temp_client), &tgtq.server)){
+ if (retval = krb5_tgtname(context,
+ krb5_princ_realm(context, temp_client),
+ krb5_princ_realm(context, temp_client),
+ &tgtq.server)){
return retval ;
}
- retval = krb5_cc_retrieve_cred(cc, KRB5_TC_MATCH_SRV_NAMEONLY,
+ retval = krb5_cc_retrieve_cred(context, cc,
+ KRB5_TC_MATCH_SRV_NAMEONLY,
&tgtq, &tgt);
- if (! retval) retval = krb5_check_exp(tgt.times);
+ if (! retval) retval = krb5_check_exp(context, tgt.times);
if (retval){
if ((retval != KRB5_CC_NOTFOUND) &&
@@ -650,7 +671,8 @@ A principal is picked that has the best chance of getting in.
**********************************************************************/
-krb5_error_code get_best_principal(plist, client)
+krb5_error_code get_best_principal(context, plist, client)
+ krb5_context context;
char **plist;
krb5_principal *client;
{
@@ -661,26 +683,26 @@ int i = 0, nelem;
if (! plist ) return 0;
- nelem = krb5_princ_size(*client);
+ nelem = krb5_princ_size(context, *client);
while(plist[i]){
- if (retval = krb5_parse_name(plist[i], &temp_client)){
+ if (retval = krb5_parse_name(context, plist[i], &temp_client)){
return retval;
}
- if (krb5_princ_realm(*client)->length ==
- krb5_princ_realm(temp_client)->length
- && (!memcmp (krb5_princ_realm(*client)->data,
- krb5_princ_realm(temp_client)->data,
- krb5_princ_realm(temp_client)->length))){
+ if (krb5_princ_realm(context, *client)->length ==
+ krb5_princ_realm(context, temp_client)->length
+ && (!memcmp (krb5_princ_realm(context, *client)->data,
+ krb5_princ_realm(context, temp_client)->data,
+ krb5_princ_realm(context, temp_client)->length))){
if(nelem){
krb5_data *p1 =
- krb5_princ_component(*client, 0);
+ krb5_princ_component(context, *client, 0);
krb5_data *p2 =
- krb5_princ_component(temp_client, 0);
+ krb5_princ_component(context, temp_client, 0);
if ((p1->length == p2->length) &&
(!memcmp(p1->data,p2->data,p1->length))){
@@ -692,8 +714,8 @@ int i = 0, nelem;
}
if(best_client){
- if(krb5_princ_size(best_client) >
- krb5_princ_size(temp_client)){
+ if(krb5_princ_size(context, best_client) >
+ krb5_princ_size(context, temp_client)){
best_client = temp_client;
}
}else{
diff --git a/src/clients/ksu/ksu.h b/src/clients/ksu/ksu.h
index 76e1928a6..013230fba 100644
--- a/src/clients/ksu/ksu.h
+++ b/src/clients/ksu/ksu.h
@@ -90,7 +90,6 @@ typedef struct opt_info{
extern krb5_boolean krb5_auth_check();
extern krb5_error_code get_best_principal();
extern void dump_principal ();
-extern krb5_error_code krb5_verify_tkt_def();
extern krb5_boolean krb5_fast_auth();
extern krb5_boolean krb5_get_tkt_via_passwd ();
extern int gen_sym();
diff --git a/src/clients/ksu/main.c b/src/clients/ksu/main.c
index b376ccd6e..489c81941 100644
--- a/src/clients/ksu/main.c
+++ b/src/clients/ksu/main.c
@@ -79,6 +79,7 @@ int use_source_cache = 0;
krb5_error_code retval = 0;
krb5_principal client = NULL;
krb5_ccache cc_target = NULL;
+krb5_context ksu_context;
char * cc_target_tag = NULL;
char * target_user = NULL;
char * source_user;
@@ -121,7 +122,8 @@ char * dir_of_cc_source;
params[1] = NULL;
- krb5_init_ets(); /* initialize kerberos error tables */
+ krb5_init_context(&ksu_context);
+ krb5_init_ets(ksu_context); /* initialize kerberos error tables */
#ifdef LOCAL_REALM
local_realm_name = LOCAL_REALM ;
@@ -170,7 +172,7 @@ char * dir_of_cc_source;
switch (option) {
case 'r':
options.opt |= KDC_OPT_RENEWABLE;
- retval = krb5_parse_lifetime(optarg, &options.rlife);
+ retval = krb5_parse_lifetime(ksu_context, optarg, &options.rlife);
if (retval != 0 || options.rlife == 0) {
fprintf(stderr, "Bad lifetime value (%s hours?)\n", optarg);
errflg++;
@@ -202,14 +204,14 @@ char * dir_of_cc_source;
quiet =1;
break;
case 'l':
- retval = krb5_parse_lifetime(optarg, &options.lifetime);
+ retval = krb5_parse_lifetime(ksu_context, optarg, &options.lifetime);
if (retval != 0 || options.lifetime == 0) {
fprintf(stderr, "Bad lifetime value (%s hours?)\n", optarg);
errflg++;
}
break;
case 'n':
- if (retval = krb5_parse_name(optarg, &client)){
+ if (retval = krb5_parse_name(ksu_context, optarg, &client)){
com_err(prog_name, retval, "when parsing name %s", optarg);
errflg++;
}
@@ -373,12 +375,12 @@ char * dir_of_cc_source;
/***********************************/
if (cc_source_tag == NULL){
- cc_source_tag = krb5_cc_default_name();
+ cc_source_tag = krb5_cc_default_name(ksu_context);
cc_source_tag_tmp = strchr(cc_source_tag, ':') + 1;
}
/* get a handle for the cache */
- if ( retval = krb5_cc_resolve(cc_source_tag, &cc_source)){
+ if ( retval = krb5_cc_resolve(ksu_context, cc_source_tag, &cc_source)){
com_err(prog_name, retval,"while getting source cache");
exit(1);
}
@@ -395,7 +397,7 @@ char * dir_of_cc_source;
}
- if (retval= krb5_ccache_refresh(cc_source)){
+ if (retval= krb5_ccache_refresh(ksu_context, cc_source)){
com_err(prog_name, retval,
"while refreshing %s (source cache)", cc_source_tag);
exit(1);
@@ -404,10 +406,10 @@ char * dir_of_cc_source;
}
- if (retval = get_best_princ_for_target(source_uid,target_uid, source_user,
- target_user, cc_source, &options, cmd,
- localhostname, &client, &hp)){
- com_err(prog_name, retval, "while selecting the best principal");
+ if (retval = get_best_princ_for_target(ksu_context, source_uid,
+ target_uid, source_user, target_user, cc_source,
+ &options, cmd, localhostname, &client, &hp)){
+ com_err(prog_name,retval, "while selecting the best principal");
exit(1);
}
@@ -442,7 +444,8 @@ char * dir_of_cc_source;
exit(1);
}
- if (retval = krb5_cc_initialize(cc_source, client)){
+ if (retval = krb5_cc_initialize(ksu_context, cc_source,
+ client)){
com_err(prog_name, retval,
"while initializing source cache");
exit(1);
@@ -498,20 +501,20 @@ char * dir_of_cc_source;
if ((source_uid == 0) && (target_uid != 0)) {
- if (retval =krb5_ccache_copy_restricted( cc_source,
+ if (retval =krb5_ccache_copy_restricted(ksu_context, cc_source,
cc_target_tag,client,&cc_target, &stored)){
com_err (prog_name, retval,
"while copying cache %s to %s",
- krb5_cc_get_name(cc_source),cc_target_tag);
+ krb5_cc_get_name(ksu_context, cc_source),cc_target_tag);
exit(1);
}
} else{
- if (retval = krb5_ccache_copy(cc_source, cc_target_tag,
+ if (retval = krb5_ccache_copy(ksu_context, cc_source, cc_target_tag,
client,&cc_target, &stored)){
com_err (prog_name, retval,
"while copying cache %s to %s",
- krb5_cc_get_name(cc_source),
+ krb5_cc_get_name(ksu_context, cc_source),
cc_target_tag);
exit(1);
}
@@ -524,7 +527,7 @@ char * dir_of_cc_source;
cc_target_tag = cc_source_tag;
cc_target_tag_tmp = cc_source_tag_tmp;
- if(retval=krb5_find_princ_in_cache(cc_target,client, &stored)){
+ if(retval=krb5_find_princ_in_cache(ksu_context, cc_target,client, &stored)){
com_err (prog_name, retval,
"while searching for client in source ccache");
exit(1);
@@ -534,24 +537,25 @@ char * dir_of_cc_source;
if ((source_uid == 0) || (target_uid == source_uid)){
#ifdef GET_TGT_VIA_PASSWD
if ((!all_rest_copy) && options.princ && (stored == FALSE)){
- if (retval = krb5_tgtname(krb5_princ_realm (client),
- krb5_princ_realm(client),
+ if (retval = krb5_tgtname(ksu_context,
+ krb5_princ_realm (ksu_context, client),
+ krb5_princ_realm(ksu_context, client),
&kdc_server)){
com_err(prog_name, retval,
"while creating tgt for local realm");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
fprintf(stderr,"WARNING: Your password may be exposed if you enter it here and are logged \n");
fprintf(stderr," in remotely using an unsecure (non-encrypted) channel.\n");
- if (krb5_get_tkt_via_passwd (&cc_target, client,
+ if (krb5_get_tkt_via_passwd (ksu_context, &cc_target, client,
kdc_server, &options,
&zero_password) == FALSE){
if (zero_password == FALSE){
fprintf(stderr,"Goodbye\n");
- sweep_up(use_source_cache,
+ sweep_up(ksu_context, use_source_cache,
cc_target);
exit(1);
}
@@ -572,7 +576,7 @@ char * dir_of_cc_source;
if (source_uid && (source_uid != target_uid)) {
char * client_name;
- auth_val = krb5_auth_check(client, localhostname, &options,
+ auth_val = krb5_auth_check(ksu_context, client, localhostname, &options,
target_user,cc_target, &path_passwd);
@@ -582,20 +586,20 @@ char * dir_of_cc_source;
syslog(LOG_WARNING,
"'%s %s' authentication failed for %s%s",
prog_name,target_user,source_user,ontty());
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
/* cache the tickets if possible in the source cache */
if (!path_passwd && !use_source_cache){
- if (retval = krb5_ccache_overwrite(cc_target, cc_source,
+ if (retval = krb5_ccache_overwrite(ksu_context, cc_target, cc_source,
client)){
com_err (prog_name, retval,
"while copying cache %s to %s",
- krb5_cc_get_name(cc_target),
- krb5_cc_get_name(cc_source));
- sweep_up(use_source_cache, cc_target);
+ krb5_cc_get_name(ksu_context, cc_target),
+ krb5_cc_get_name(ksu_context, cc_source));
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
if (chown(cc_source_tag_tmp, source_uid, source_gid)){
@@ -606,9 +610,9 @@ char * dir_of_cc_source;
}
}
- if (retval = krb5_unparse_name(client, &client_name)) {
+ if (retval = krb5_unparse_name(ksu_context, client, &client_name)) {
com_err (prog_name, retval, "When unparsing name");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
@@ -617,10 +621,10 @@ char * dir_of_cc_source;
prog_name,target_user,client_name,
source_user,ontty());
- if(retval = krb5_authorization(client,target_user,
+ if(retval = krb5_authorization(ksu_context, client,target_user,
local_realm_name, cmd, &authorization_val, &exec_cmd)){
com_err(prog_name,retval,"while checking authorization");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
@@ -666,21 +670,21 @@ char * dir_of_cc_source;
}
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
}
if( some_rest_copy){
- if (retval = krb5_ccache_filter(cc_target, client)){
+ if (retval = krb5_ccache_filter(ksu_context, cc_target, client)){
com_err(prog_name,retval,"while calling cc_filter");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
}
if (all_rest_copy){
- if (retval = krb5_cc_initialize(cc_target, client)){
+ if (retval = krb5_cc_initialize(ksu_context, cc_target, client)){
com_err(prog_name, retval,
"while erasing target cache");
exit(1);
@@ -703,7 +707,7 @@ char * dir_of_cc_source;
if (!standard_shell(target_pwd->pw_shell) && source_uid) {
fprintf(stderr, "ksu: permission denied (shell).\n");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
#endif /* HAS_GETUSERSHELL */
@@ -712,20 +716,20 @@ char * dir_of_cc_source;
if(set_env_var("USER", target_pwd->pw_name)){
fprintf(stderr,"ksu: couldn't set environment variable USER\n");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
}
if(set_env_var( "HOME", target_pwd->pw_dir)){
fprintf(stderr,"ksu: couldn't set environment variable USER\n");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
if(set_env_var( "SHELL", shell)){
fprintf(stderr,"ksu: couldn't set environment variable USER\n");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
@@ -734,7 +738,7 @@ char * dir_of_cc_source;
if(set_env_var( KRB5_ENV_CCNAME, cc_target_tag)){
fprintf(stderr,"ksu: couldn't set environment variable %s \n",
KRB5_ENV_CCNAME);
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
@@ -746,7 +750,7 @@ char * dir_of_cc_source;
if (chown(cc_target_tag_tmp, target_uid, target_gid)){
com_err(prog_name, errno, "while changing owner for %s",
cc_target_tag_tmp);
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
@@ -755,14 +759,14 @@ char * dir_of_cc_source;
/* set permissions */
if (setgid(target_pwd->pw_gid) < 0) {
perror("ksu: setgid");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
if (initgroups(target_user, target_pwd->pw_gid)) {
fprintf(stderr, "ksu: initgroups failed.\n");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
@@ -776,7 +780,7 @@ char * dir_of_cc_source;
if (setuid(target_pwd->pw_uid) < 0) {
perror("ksu: setuid");
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}
@@ -812,7 +816,7 @@ char * dir_of_cc_source;
execv(params[0], params);
com_err(prog_name, errno, "while trying to execv %s",
params[0]);
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
exit(1);
}else{
if (child_pid = fork()){
@@ -825,7 +829,7 @@ char * dir_of_cc_source;
com_err(prog_name, errno, "while calling waitpid");
exit(1);
}
- sweep_up(use_source_cache, cc_target);
+ sweep_up(ksu_context, use_source_cache, cc_target);
if (auth_debug){
printf("The exit status of the child is %d\n",
@@ -885,7 +889,8 @@ char * env_var_buf;
}
-void sweep_up(use_source_cache, cc)
+void sweep_up(context, use_source_cache, cc)
+ krb5_context context;
int use_source_cache;
krb5_ccache cc;
{
@@ -894,9 +899,9 @@ char * cc_name;
struct stat st_temp;
if (! use_source_cache){
- cc_name = krb5_cc_get_name(cc);
+ cc_name = krb5_cc_get_name(context, cc);
if ( ! stat(cc_name, &st_temp)){
- if (retval = krb5_cc_destroy(cc)){
+ if (retval = krb5_cc_destroy(context, cc)){
com_err(prog_name, retval,
"while destroying cache");
}