diff options
| author | Simo Sorce <simo@redhat.com> | 2013-11-15 10:33:52 -0500 |
|---|---|---|
| committer | Simo Sorce <simo@redhat.com> | 2013-11-16 17:28:51 -0500 |
| commit | 4cefc5db286f6764e7ff8535e3c5e3e98733355d (patch) | |
| tree | bbc4786adfc99d92839da5c771685809df5373fb /proxy/src/client | |
| parent | 16f8bf04b9f254914379d2cefe504a7511e75371 (diff) | |
| download | gss-proxy-4cefc5db286f6764e7ff8535e3c5e3e98733355d.tar.gz gss-proxy-4cefc5db286f6764e7ff8535e3c5e3e98733355d.tar.xz gss-proxy-4cefc5db286f6764e7ff8535e3c5e3e98733355d.zip | |
Fix continuations in context establishment calls
Properly support continuations, including returning the rigth error code
and exporting partial contexts.
Fixes multistep authentications in particular for the initialization case
which always uses continuations.
Resolves: https://fedorahosted.org/gss-proxy/ticket/108
Diffstat (limited to 'proxy/src/client')
| -rw-r--r-- | proxy/src/client/gpm_init_sec_context.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/proxy/src/client/gpm_init_sec_context.c b/proxy/src/client/gpm_init_sec_context.c index b6ce34f..f6dfe53 100644 --- a/proxy/src/client/gpm_init_sec_context.c +++ b/proxy/src/client/gpm_init_sec_context.c @@ -104,13 +104,6 @@ OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status, } } - if (res->status.major_status) { - gpm_save_status(&res->status); - ret_maj = res->status.major_status; - ret_min = res->status.minor_status; - goto done; - } - if (res->context_handle) { ctx = res->context_handle; /* we are stealing the delegated creds on success, so we do not want @@ -118,12 +111,18 @@ OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status, res->context_handle = NULL; } - ret = gp_conv_gssx_to_buffer_alloc(res->output_token, &outbuf); - if (ret) { - gpm_save_internal_status(ret, strerror(ret)); - goto done; + if (res->output_token) { + ret = gp_conv_gssx_to_buffer_alloc(res->output_token, &outbuf); + if (ret) { + gpm_save_internal_status(ret, strerror(ret)); + goto done; + } } + ret_maj = res->status.major_status; + ret_min = res->status.minor_status; + gpm_save_status(&res->status); + done: if (ret != 0) { ret_min = ret; |
