This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU gss".
http://git.savannah.gnu.org/cgit/gss.git/commit/?id=bc53375e344205579e852b3e0215ebdf31ebd182 The branch, master has been updated via bc53375e344205579e852b3e0215ebdf31ebd182 (commit) via ce7b9ecd791bc1c536c0ff272b9aefe197962729 (commit) via 58f5eb127a404d6e6d99409d34df96d911d15a4a (commit) from ddc99d9a4045851a3da5e33b1a98eab7ee4eebfb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit bc53375e344205579e852b3e0215ebdf31ebd182 Author: Simon Josefsson <[email protected]> Date: Tue Aug 14 16:51:23 2012 +0200 Fix non-shishi builds. commit ce7b9ecd791bc1c536c0ff272b9aefe197962729 Author: Simon Josefsson <[email protected]> Date: Tue Aug 14 16:47:45 2012 +0200 Find mechanism by looking at context token. commit 58f5eb127a404d6e6d99409d34df96d911d15a4a Author: Simon Josefsson <[email protected]> Date: Tue Aug 14 16:34:59 2012 +0200 Ignore more. ----------------------------------------------------------------------- Summary of changes: .gitignore | 3 +++ lib/asn1.c | 8 +++++--- lib/context.c | 24 ++++++++++++++++++++---- lib/internal.h | 4 ++++ tests/saslname.c | 2 -- 5 files changed, 32 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 3231a3d..9960a47 100644 --- a/.gitignore +++ b/.gitignore @@ -232,6 +232,8 @@ src/gl/Makefile src/gl/Makefile.in src/gl/TAGS src/gl/arg-nonnull.h +src/gl/base64.lo +src/gl/base64.o src/gl/c++defs.h src/gl/getopt.h src/gl/getopt.lo @@ -243,6 +245,7 @@ src/gl/link-warning.h src/gl/progname.lo src/gl/progname.o src/gl/string.h +src/gl/sys/ src/gl/tests/.deps/ src/gl/tests/Makefile src/gl/tests/Makefile.in diff --git a/lib/asn1.c b/lib/asn1.c index 4bb101c..8cb7e84 100644 --- a/lib/asn1.c +++ b/lib/asn1.c @@ -192,7 +192,7 @@ gss_encapsulate_token (gss_const_buffer_t input_token, return GSS_S_COMPLETE; } -static int +int _gss_decapsulate_token (const char *in, size_t inlen, char **oid, size_t * oidlen, char **out, size_t * outlen) @@ -238,8 +238,10 @@ _gss_decapsulate_token (const char *in, size_t inlen, inlen -= asn1lenlen; in += asn1lenlen; - *outlen = inlen; - *out = (char *) in; + if (outlen) + *outlen = inlen; + if (out) + *out = (char *) in; return 0; } diff --git a/lib/context.c b/lib/context.c index c031f76..0f8c086 100644 --- a/lib/context.c +++ b/lib/context.c @@ -705,12 +705,28 @@ gss_accept_sec_context (OM_uint32 * minor_status, if (*context_handle == GSS_C_NO_CONTEXT) { - /* FIXME: We should extract GSS-API mechanism OID from token - here, and use it to find the proper mechanism. */ - mech = _gss_find_mech (GSS_C_NO_OID); + char *oid; + size_t oidlen; + gss_OID_desc oidbuf; + int rc; + + rc = _gss_decapsulate_token (input_token_buffer->value, + input_token_buffer->length, + &oid, &oidlen, NULL, NULL); + if (rc != 0) + { + if (minor_status) + *minor_status = 0; + return GSS_S_DEFECTIVE_TOKEN; + } + + oidbuf.elements = oid; + oidbuf.length = oidlen; + + mech = _gss_find_mech_no_default (&oidbuf); } else - mech = _gss_find_mech ((*context_handle)->mech); + mech = _gss_find_mech_no_default ((*context_handle)->mech); if (mech == NULL) { if (minor_status) diff --git a/lib/internal.h b/lib/internal.h index 2229796..81838db 100644 --- a/lib/internal.h +++ b/lib/internal.h @@ -71,5 +71,9 @@ _gss_encapsulate_token_prefix (const char *prefix, size_t prefixlen, const char *in, size_t inlen, const char *oid, OM_uint32 oidlen, void **out, size_t * outlen); +extern int +_gss_decapsulate_token (const char *in, size_t inlen, + char **oid, size_t * oidlen, + char **out, size_t * outlen); #endif /* _INTERNAL_H */ diff --git a/tests/saslname.c b/tests/saslname.c index e6f650d..cf8c7b0 100644 --- a/tests/saslname.c +++ b/tests/saslname.c @@ -38,9 +38,7 @@ main (int argc, char *argv[]) { gss_uint32 maj_stat, min_stat; gss_buffer_desc bufdesc; -#ifdef USE_KERBEROS5 gss_OID oid; -#endif do if (strcmp (argv[argc - 1], "-v") == 0 || hooks/post-receive -- GNU gss _______________________________________________ Gss-commit mailing list [email protected] https://lists.gnu.org/mailman/listinfo/gss-commit
