diff options
author | Robbie Harwood <rharwood@redhat.com> | 2016-05-08 02:31:00 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2016-05-18 17:46:14 -0400 |
commit | 6a0bc4f5cd46b1ab85dba5bd2de28f568cc947b0 (patch) | |
tree | 8f1451065efa8afb840cde844b48cf1c3de5c6b0 /src/sessions.c | |
parent | 6e746f91177902528e42ac982e965fe469aa8855 (diff) | |
download | mod_auth_gssapi-6a0bc4f5cd46b1ab85dba5bd2de28f568cc947b0.tar.gz mod_auth_gssapi-6a0bc4f5cd46b1ab85dba5bd2de28f568cc947b0.tar.xz mod_auth_gssapi-6a0bc4f5cd46b1ab85dba5bd2de28f568cc947b0.zip |
Implement unique ccache names
Unique ccache names may be requested using the GssapiDelegCcacheUnique
configuration option. This option is off by default. If both unique
ccache names and session use are enabled, then a mechanism for removing
old ccaches must be supplied.
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
Also-authored-by: Petr Vobornik <pvoborni@redhat.com>
Reviewed-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'src/sessions.c')
-rw-r--r-- | src/sessions.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/sessions.c b/src/sessions.c index d8c4873..d99b92d 100644 --- a/src/sessions.c +++ b/src/sessions.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2014 mod_auth_gssapi contributors - See COPYING for (C) terms */ +/* Copyright (C) 2014, 2016 mod_auth_gssapi contributors - See COPYING for (C) terms */ #include "mod_auth_gssapi.h" #include "asn1c/GSSSessionData.h" @@ -179,6 +179,12 @@ void mag_check_session(struct mag_req_cfg *cfg, struct mag_conn **conn) memcpy(mc->basic_hash.value, gsessdata->basichash.buf, gsessdata->basichash.size); + /* ccname */ + mc->ccname = apr_pstrndup(mc->pool, + (char *)gsessdata->ccname.buf, + gsessdata->ccname.size); + if (!mc->ccname) goto done; + /* OK we have a valid token */ mc->established = true; @@ -224,6 +230,8 @@ void mag_attempt_session(struct mag_req_cfg *cfg, struct mag_conn *mc) (const char *)mc->basic_hash.value, mc->basic_hash.length) != 0) goto done; + if (OCTET_STRING_fromString(&gsessdata.ccname, mc->ccname) != 0) + goto done; ret = encode_GSSSessionData(req->pool, &gsessdata, &plainbuf.value, &plainbuf.length); if (ret == false) { |