summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Coffman <kwc@citi.umich.edu>2006-12-01 19:36:38 +0000
committerKevin Coffman <kwc@citi.umich.edu>2006-12-01 19:36:38 +0000
commit4e4b77279e9fdccc20a6871c68f6bf053df7a1f6 (patch)
tree69287da46864348d1bbf108d199510de6a7c1acc
parent49d68d9e8a2fed75040872ae1d8e250c39b58acd (diff)
downloadkrb5-4e4b77279e9fdccc20a6871c68f6bf053df7a1f6.tar.gz
krb5-4e4b77279e9fdccc20a6871c68f6bf053df7a1f6.tar.xz
krb5-4e4b77279e9fdccc20a6871c68f6bf053df7a1f6.zip
send a new request with the new padata returned by krb5_do_preauth_tryagain()
Send another request containing the padata obtained from tryagain. * src/include/k5-int.h Update prototype * src/lib/krb5/krb/get_in_tkt.c Send pointer to the request.padata so krb5_do_preauth_tryagain() can update the request to be sent. * src/lib/krb5/krb/preauth2.c If a module returns modified padata, add it to the return_padata and return. ticket: new Component: krb5-libs Target_Version: 1.6 Tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18896 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/include/k5-int.h2
-rw-r--r--src/lib/krb5/krb/get_in_tkt.c2
-rw-r--r--src/lib/krb5/krb/preauth2.c7
3 files changed, 5 insertions, 6 deletions
diff --git a/src/include/k5-int.h b/src/include/k5-int.h
index 6568ab132..1935daeeb 100644
--- a/src/include/k5-int.h
+++ b/src/include/k5-int.h
@@ -1067,7 +1067,7 @@ krb5_error_code KRB5_CALLCONV krb5_do_preauth_tryagain
krb5_kdc_req *request,
krb5_data *encoded_request_body,
krb5_data *encoded_previous_request,
- krb5_pa_data **in_padata,
+ krb5_pa_data **in_padata, krb5_pa_data ***out_padata,
krb5_error *err_reply,
krb5_data *salt, krb5_data *s2kparams,
krb5_enctype *etype, krb5_keyblock *as_key,
diff --git a/src/lib/krb5/krb/get_in_tkt.c b/src/lib/krb5/krb/get_in_tkt.c
index a71d98d41..9cf022fe8 100644
--- a/src/lib/krb5/krb/get_in_tkt.c
+++ b/src/lib/krb5/krb/get_in_tkt.c
@@ -1120,7 +1120,7 @@ krb5_get_init_creds(krb5_context context,
&request,
encoded_request_body,
encoded_previous_request,
- preauth_to_use,
+ preauth_to_use, &request.padata,
err_reply,
&salt, &s2kparams, &etype, &as_key,
prompter, prompter_data,
diff --git a/src/lib/krb5/krb/preauth2.c b/src/lib/krb5/krb/preauth2.c
index 81b7e2c57..7c34ca206 100644
--- a/src/lib/krb5/krb/preauth2.c
+++ b/src/lib/krb5/krb/preauth2.c
@@ -1290,6 +1290,7 @@ krb5_do_preauth_tryagain(krb5_context kcontext,
krb5_data *encoded_request_body,
krb5_data *encoded_previous_request,
krb5_pa_data **padata,
+ krb5_pa_data ***return_padata,
krb5_error *err_reply,
krb5_data *salt, krb5_data *s2kparams,
krb5_enctype *etype,
@@ -1303,6 +1304,7 @@ krb5_do_preauth_tryagain(krb5_context kcontext,
krb5_preauth_context *context;
struct _krb5_preauth_context_module *module;
int i, j;
+ int out_pa_list_size = 0;
ret = KRB_ERR_GENERIC;
if (kcontext->preauth_context == NULL) {
@@ -1338,10 +1340,7 @@ krb5_do_preauth_tryagain(krb5_context kcontext,
as_key,
&out_padata) == 0) {
if (out_padata != NULL) {
- if (padata[i]->contents != NULL)
- free(padata[i]->contents);
- free(padata[i]);
- padata[i] = out_padata;
+ grow_pa_list(return_padata, &out_pa_list_size, out_padata);
return 0;
}
}