Commit Graph

19 Commits

Author SHA1 Message Date
Luke Howard
034bc1649d gss: avoid overflow in gss_inquire_cred()
See #791

Make found a boolean rather than a count of found mechanisms.
2021-08-06 12:23:50 +10:00
Nicolas Williams
a54761d68a Properly implement neg_mechs & GM_USE_MG_CRED
SPNEGO was already using union creds.  Now make the mechglue know about
it, delete all of the cred-related SPNEGO stubs that are now not called
(lib/gssapi/spnego/cred_stubs.c), and implement gss_get/set_neg_mechs()
by storing the OID set in the union cred.

This commit was essentially authored as much if not more by Luke Howard
<lukeh at padl.com> as much as by the listed author.
2020-04-21 00:21:32 -05:00
Luke Howard
4fb6a6adc9 gss: port NegoEx implementation from MIT
An implementation of draft-zhu-negoex-04 for MIT Kerberos was developed in
2011. This has been recently integrated, with many fixes from Greg Hudson. This
commit ports it to Heimdal. The implementation has been interoperability tested
with MIT Kerberos and Windows, using the GSS EAP mechanism developed as part of
the Moonshot project.

The SPNEGO code was also updated to import the state machine from Apple which
improves mechListMIC processing and avoids discarding initial context tokens
generated during mechanism probing, that can be used for optimistic tokens.

Finally, to aid in testing, the GSS-API mechanism glue configuration file can
be changed using the environment variable GSS_MECH_CONFIG. This environment
variable name, along with the format of the configuration file, is compatible
with MIT (although it would be difficult for a single mechanism binary to
support both implementations).
2020-02-04 17:28:35 +11:00
Luke Howard
31af9ba703 gss: use tail queue instead of singly linked list in mechglue
The GSS mechglue uses singly linked lists for mechanisms and mechanism objects,
to which new entries are inserted at the head. This breaks ordering of
mechanisms specified in OID sets and in /etc/gss/mech, as they will be back to
front. Use a tail queue instead so that new entries are inserted at the end.
2020-02-04 17:28:35 +11:00
Luke Howard
83f15553e0 gssapi: import mechglue allocation utility functions from Heimdal-520
Apple's Heimdal impelmentation uses a number of utility functions for
allocating names and credentials, to avoid calling malloc or calloc directly.
Import them.
2019-01-03 14:38:39 -06:00
Luke Howard
ad426d0385 gssapi: import bugfixes from Apple Heimdal-520
* check `ctx->gc_ctx` in `gss_inquire_context()`
* check `gm_inquire_cred != NULL` in `gss_inquire_context()`
* check `min_lifetime` in `gss_inquire_cred()`
* check `gm_inquire_cred_by_mech != NULL` in `gss_inquire_cred_by_mech()`
* set mech error in `gss_inquire_cred_by_oid()`
* don't clobber error in `gss_inquire_cred_by_oid()`
* don't pass NULL minor_status to `gss_krb5_free_lucid_sec_context()`
* allow NULL ccache in `gss_krb5_ccache_name()`
* NULL names OK in `_gss_find_mn()`
* allow empty names in `gss_import_name()` (removes `input_name_buffer` length
  check). to support ANONYMOUS.  in `gss_import_name()`, ignore mech name
  import failure as long as it's possible to import the name in some other
  mechanism
* better argument validation in `gss_export_sec_context()`
* in `gss_compare_name()`, check `mn2 != NULL`
* check `gss_add_oid_set_member()` return code in `gss_indicate_mechs()`
* in `gss_destroy_cred()`, set output cred handle to `GSS_C_NO_CREDENTIAL`
* cast size_t to OM_uint32 where required
2019-01-03 17:53:25 +11:00
Luke Howard
4a93c4774a gss: intern OIDs (#447)
Intern OIDs so that gss_release_oid() can be a NOOP.
2018-12-18 23:28:38 -06:00
Nicolas Williams
774f166e31 First attempt s/\<const gss_.*_t/gss_const_.*_t/g 2013-06-02 15:30:58 -05:00
Love Hornquist Astrand
7c7dd8e1af prefix SLIST with HEIM 2010-12-12 11:45:35 -08:00
Asanka Herath
5dcc605f6b Fix calling conventions for Windows 2010-08-20 13:14:10 -04:00
Love Hornquist Astrand
d890db78a8 Drop RCSID 2009-09-10 09:06:18 -07:00
Love Hörnquist Åstrand
795ee939ea Add declspec for Windows
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23025 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-04-17 10:01:57 +00:00
Love Hörnquist Åstrand
bee2a593cd dont keep track of gc_usage, just figure it out at gss_inquire_cred() time
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20626 ec53bebd-3082-4978-b11e-865c3cabbd6b
2007-05-08 13:56:49 +00:00
Love Hörnquist Åstrand
ec4eebc3bc Reset out variables, fix memory leak.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19959 ec53bebd-3082-4978-b11e-865c3cabbd6b
2007-01-17 14:59:22 +00:00
Love Hörnquist Åstrand
00e06e0965 (gss_inquire_cred): call _gss_load_mech
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17843 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-07-20 02:03:18 +00:00
Love Hörnquist Åstrand
5a56af8c79 move the check if we found any cred where it matter for both cases
(default cred and provided cred)


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17814 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-07-06 22:34:05 +00:00
Love Hörnquist Åstrand
323e9bf254 The variable `mechanisms´ might be NULL, use a diffrent counter if we
manged to inquire the underlaying creds or not


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17813 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-07-06 22:32:28 +00:00
Love Hörnquist Åstrand
d3f8f8e122 Bug fixes, cleanup, compiler warnings, restructure code.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17700 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-06-28 09:00:26 +00:00
Love Hörnquist Åstrand
2baa7e7d61 Initial revision
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17692 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-06-28 08:34:45 +00:00