Commit Graph

105 Commits

Author SHA1 Message Date
Nicolas Williams
ea90ca8666 Move some infra bits of lib/krb5/ to lib/base/ (2)
This is the second of two commits in a series that must be picked together.

This series of two commits moves parts of lib/krb5/ infrastructure
functionality to lib/base/, leaving behind wrappers.

Some parts of libkrb5 are entirely generic or easily made so, and could
be useful in various parts of Heimdal that are not specific to the krb5
API, such as:

 - lib/gssapi/  (especially since the integration of NegoEx)
 - lib/hx509/
 - bx509d       (which should really move out of kdc/)

For the above we need to move these bits of lib/krb5/:

 - lib/krb5/config_file.c   (all of it, leaving forwardings behind)
 - lib/krb5/config_reg.c    (all of it)
 - lib/krb5/plugin.c        (all of it, leaving forwardings behind)
 - lib/krb5/log.c           (all of it, ditto)
 - lib/krb5/heim_err.et     (all of it)

And because of those two, these too must also move:

 - lib/krb5/expand_path.c   (all of it, leaving forwardings behind)
 - lib/krb5/warn.c          (just the warning functions, ditto)

The changes to the moved files are mostly quite straightforward and are
best reviewed with --word-diff=color.

We're also creating a heim_context and a heim API to go with it.  But
it's as thin as possible, with as little state as necessary to enable
this move.  Functions for dealing with error messages use callbacks.

Moving plugin.c does have one knock-on effect on all users of the old
krb5 plugin API (which remains), which is that a global search and
replace of struct krb5_plugin_data to struct heim_plugin_data was
needed, though the layout and size of that structure doesn't change, so
the ABI doesn't either.

As well, we now build lib/vers/ and lib/com_err/ before lib/base/ so as
to be able to move lib/krb5/heim_err.et to lib/base/ so that we can make
use of HEIM_ERR_* in lib/base/, specifically in the files that moved.

Once this is all done we'll be able to use config files and plugins in
lib/hx509/, we'll be able to move bx509d out of kdc/, and so on.

Most if not all of the new functions in lib/base/ are Heimdal-private,
thus calling conventions for them are not declared.

Status:

 - builds and passes CIs (Travis, Appveyor)
 - ran make check-valgrind and no new leaks or other memory errors
 - ready for review

HOW TO REVIEW:

     $ # Review file moves:
     $ git log --stat -n1 HEAD^
     $
     $ # Review changes to moved files using --word-diff=color
     $ git log -p -b -w --word-diff=color HEAD^..HEAD   \
               lib/base/config_file.c                   \
               lib/base/config_reg.c                    \
               lib/base/expand_path.c                   \
               lib/base/warn.c                          \
               lib/krb5/config_file.c                   \
               lib/krb5/config_reg.c                    \
               lib/krb5/expand_path.c                   \
               lib/krb5/warn.c
     $
     $ # Review the whole thing, possibly adding -b and/or -w, and
     $ # maybe --word-diff=color:
     $ git log -p origin/master..HEAD
     $ git log -p -b -w origin/master..HEAD
     $ git log -p -b -w --word-diff=color origin/master..HEAD

TBD (future commits):

 - make lib/gssapi use the new heimbase functions
 - move kx509/bx509d common code to lib/hx509/ or other approp. location
 - move bx509d out of kdc/
2020-03-02 10:56:13 -06:00
Jeffrey Altman
387684aa93 WIN32: fix calling conventions for 32-bit builds
On 32-bit Windows Intel builds the __cdecl and __stdcall calling
conventions are different so labeling the functions that are
exported or assigned to function pointers matters.

Change-Id: I03b6f34baeb9ffb2e683fd979f12f27a5078a4da
2019-01-14 06:12:36 -05:00
Luke Howard
803efebca5 krb5, kadm5: refactor plugin API
Refactor plugin framework to use a single list of loaded plugins; add a new
plugin API where DSOs export a load function that can declare dependencies and
export multiple plugins; refactor kadm5 hook API to use krb5 plugin framework.

More information in krb5-plugin(7).
2019-01-03 20:06:27 -06:00
Nicolas Williams
1c81ddf4e2 Round #2 of scan-build warnings cleanup 2016-11-16 17:03:14 -06:00
Nicolas Williams
995966f9d1 Fix hdb_create() HDB dbname parsing 2016-11-15 15:35:19 -06:00
Nicolas Williams
09f0a25fda kdc --builtin-hdb should list loadable backends
This fixes the following problems from #210:

 - hdb_ldap doesn't load even when installed correctly
 - loadable hdb backends not listed by kdc --builtin-hdb

Not fixed:

 - hdb_ldap.so not installed in plugin dir
2016-11-15 11:34:54 -06:00
Nicolas Williams
b83cf2f3bd Support db1 and db3 at the same time 2016-11-08 15:41:38 -06:00
Nicolas Williams
16275048b8 Prefer LMDB to Berkeley DB 2016-02-26 00:55:32 -06:00
Nicolas Williams
a94dc50114 Add --with-db-type-preference config param 2016-02-26 00:55:32 -06:00
Nicolas Williams
c6f24e99f0 Revamp cf/db.m4; test LMDB 2016-02-26 00:55:32 -06:00
Love Hörnquist Åstrand
d8d0e659ce make sure h is set at when we find a match, from [GITHUB #54] 2014-01-31 08:45:29 +01:00
Love Hornquist Astrand
9b6cae5408 remove unused code that I meant to drop 2013-03-05 20:06:15 -08:00
Nicolas Williams
d9764a5399 Make lib/hdb/hdb.c build (but hdb plugins broken) 2013-03-05 21:47:21 -06:00
Love Hornquist Astrand
1eb4e2516e unify hdb_so_method and hdb_method 2013-03-04 10:18:16 -08:00
Tollef Fog Heen
4787ea76a9 Update hdb's use of the plugin interface
The various _krb5_plugin_* functions are gone, replace this with the new world order.

Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
2013-03-04 10:00:41 -08:00
Howard Chu
9f95207933 Add support for OpenLDAP libmdb 2012-10-07 16:47:45 -07:00
Love Hornquist Astrand
216bfa564d rename mdb to mitdb 2012-10-06 15:38:56 -07:00
Nicolas Williams
c9609cdb37 Initial patch for dealing with AD x-realm key rollover
AD issues x-realm TGTs with kvno 0.  On key x-realm trust key change
    we need to be able to try current and previous keys for trust, else
    we will have some failures.
2011-11-15 21:53:33 -06:00
Nicolas Williams
cf1c898e95 Undo a s/size_t/int/. Iterators must be unsigned. 2011-07-22 16:07:05 -05:00
Nicolas Williams
fca53990e4 Initial commit for second approach for multiple kvno. NOT TESTED! 2011-07-22 16:04:51 -05:00
Love Hornquist Astrand
0879b9831a remove trailing whitespace 2011-05-21 11:57:31 -07:00
Love Hornquist Astrand
f5f9014c90 Warning fixes from Christos Zoulas
- shadowed variables
- signed/unsigned confusion
- const lossage
- incomplete structure initializations
- unused code
2011-04-29 20:25:05 -07:00
Love Hornquist Astrand
7a4d4c5f4e Add HAVE_SQLITE3 that allows control if you want sqlite or not 2011-04-16 10:26:43 -07:00
Asanka C. Herath
2f8031c1d1 Cast dlsym() returns before use 2010-11-24 15:33:10 -05:00
Gabor Gombas
75a53f54fc the MIT DB code is between "#if HAVE_DB1... #endif"
use the same check in the descriptor table

Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
2009-11-25 05:10:29 -08:00
Love Hornquist Astrand
7b42f760b8 add _hdb_keytab2hdb_entry 2009-11-22 12:52:08 -08:00
Love Hornquist Astrand
4dc9ccf0cb add new database backends 2009-11-22 12:49:13 -08:00
Love Hornquist Astrand
39a751d6fb expose hdb_interface_version 2009-10-13 09:35:39 -07:00
Love Hornquist Astrand
82150be255 allow loading sqlite 2009-07-19 17:58:53 -07:00
Love Hörnquist Åstrand
5a9dd54e95 drop RCSID
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@25319 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-07-05 05:09:16 +00:00
Love Hörnquist Åstrand
421cb259bd doxygen
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@25080 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-04-03 17:21:59 +00:00
Love Hörnquist Åstrand
1a488a85b7 doxygen
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24977 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-03-28 17:08:57 +00:00
Love Hörnquist Åstrand
4fd6aad19a include krb5_locl.h only, no need to pull in krb5.h twice
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24087 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-12-11 04:57:09 +00:00
Love Hörnquist Åstrand
7592a925b5 avoid strndup since it doesnt do what we expect on aix
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24086 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-12-11 04:56:54 +00:00
Love Hörnquist Åstrand
2ceccf84e8 make compile
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24033 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-11-12 04:19:29 +00:00
Love Hörnquist Åstrand
1dd8ec4fe7 Provide a more standard way to produce hdb plugins. From Andrew Bartlett
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24030 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-11-12 04:19:00 +00:00
Love Hörnquist Åstrand
cdc2b37670 switch to krb5_clear_error_message
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23913 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-10-14 02:56:07 +00:00
Love Hörnquist Åstrand
6937d41a02 remove trailing whitespace
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23815 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-09-13 09:21:03 +00:00
Love Hörnquist Åstrand
e172367898 switch to utf8 encoding of all files
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23814 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-09-13 08:53:55 +00:00
Love Hörnquist Åstrand
7fcd266fdd use krb5_set_error_message
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23316 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-06-23 04:32:32 +00:00
Love Hörnquist Åstrand
24e5f936df Be better att clearing error string.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20214 ec53bebd-3082-4978-b11e-865c3cabbd6b
2007-02-09 21:51:10 +00:00
Love Hörnquist Åstrand
404b8fe3dd revert previous patch
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19175 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-11-28 14:24:27 +00:00
Love Hörnquist Åstrand
4ccac57389 (hdb_lock): also ignore EAGAIN as a locking retry error.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19168 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-11-28 09:27:38 +00:00
Love Hörnquist Åstrand
2a1dc72246 (methods): Add hook for ldb.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18266 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-10-06 16:47:22 +00:00
Love Hörnquist Åstrand
f5d20ae666 (hdb_create): print out what we don't support
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17219 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-04-24 20:57:58 +00:00
Love Hörnquist Åstrand
0c2369acd0 Wrap hdb_entry with hdb_entry_ex, patch originally from Andrew Bartlet
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16378 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-12-12 12:40:12 +00:00
Love Hörnquist Åstrand
6e58db8120 (find_method): accept relative paths as old db format too.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16318 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-11-30 12:22:09 +00:00
Love Hörnquist Åstrand
486c4cd80c Make compile again
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16316 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-11-29 20:34:35 +00:00
Love Hörnquist Åstrand
f32ada0887 Only match db databases on filename starting with '/'.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16311 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-11-29 18:48:07 +00:00
Love Hörnquist Åstrand
4107ec5557 Catch error returned by ->hdb_unlock. From Henry B. Hotz
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16186 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-10-19 13:51:40 +00:00