Commit Graph

16880 Commits

Author SHA1 Message Date
Jeffrey Altman
a472904a64 krb5: windows sysplugin_dirs
Do not look for plugin DLLs in either

  $ORIGIN/../lib/plugin/krb5
  $ORIGIN/../lib

Only look for plugin DLLs in $ORIGIN

Change-Id: I432cd81720b172e7451601b56ea7bba3c03d7d47
2013-09-10 22:31:33 -04:00
Jeffrey Altman
64e8cc04c7 krb5 tests on windows
Execute tests that were built on Windows but previously skipped.

Remove the duplicate build rules for test-rfc3961.exe.

Change-Id: Icc84c07a33afbdc6ffa509222a3c81de35168eaf
2013-09-10 22:31:32 -04:00
Jeffrey Altman
543ca2a93e asn1 check-der use roken
Rely on roken to determine which random function should be
used.

Rename parameter "rand" to "randbytes" to avoid collision with
functions named "rand()".

Change-Id: Ic07cf149daef1cd568b58277773fbe27aef04f7b
2013-09-10 22:31:31 -04:00
Nicolas Williams
3e74e2e3bb Fix some DLL hell: use dladdr() to find plugin dir
Normally one would dlopen() a shared object's basename, not its absolute
path.  However, lib/krb5/plugin.c, in an effort to be zero-conf-ish,
wants to readdir() to find plugins to load, and in the process it ends
up defeating the RTLD's search-the-caller's-rpath.

This commit partially addresses this by allowing the use of $ORIGIN in
plugin_dir values and using them for the default (except on OS X).

This allows multiple Heimdal versions installed on the same host, but
with different plugin ABIs, to co-exist.  A step forward for doing make
check on hosts where Heimdal is installed.

For now we hardcode $ORIGIN/../lib/plugin/krb5 (linux, Solaris, *BSD),
or $ORIGIN (Windows; for assemblies objects need to be in the same
directory) and we eval $ORIGIN by using dladdr() (Linux, Solaris) or
GetModuleHandleEx() (Win32, via a dladdr() wrapper in libroken) to find
the path to libkrb5 whose dirname to use as $ORIGIN.  For Windows,
because we need the plugins to be in the same directory as libkrb5, we
require a prefix on plugin DLLs ("plugin_krb5_") to distinguish them
from other objects.

We should add a special token to mean "look in $ORIGIN, sure, but
dlopen() the plugin basenames only (so the RTLD can search the rpath)".
2013-09-06 16:51:53 -05:00
Viktor Dukhovni
23b8ae825a Fix rk_cloexec_socket() prototype 2013-08-19 17:22:43 -05:00
Jeffrey Altman
3f1d795758 roken: introduce rk_cloexec_socket
Accepts type rk_socket_t and is a no-op on Windows

Change-Id: I82755872e86ef36445e60054dd752279aaceb6d1
2013-08-19 10:21:23 -04:00
Nicolas Williams
2d238b9d15 Backwards interop for older iprop peers
Don't abort() when seeing as-yet-unimplemented things we know about.

Patch from Harald Barth <haba@kth.se>.
2013-08-12 11:40:23 -05:00
Nicolas Williams
075a0d32ee Add UPN support to sqlite HDB backend 2013-08-06 20:54:23 -05:00
Jeffrey Altman
c90b0398df roken: prevent rk_mkdir recursion due to macro
rk_mkdir() should not be redefined to mkdir() nor should mkdir()
be redefined to rk_mkdir() when compiling lib/roken/mkdir.c

Change-Id: I329fd2eb5794548635d33218a65df8958746a6f9
2013-08-01 12:39:26 -04:00
Nicolas Williams
13814606f4 Fix keytab file and lock leak when trying all keys 2013-07-31 18:17:17 -05:00
Jeffrey Altman
5b223c2caa roken: do not require use of rk_mkdir on all platforms
Although rk_mkdir can be provided on all platforms there is no
reason to require that it be used by unconditionally mapping

  mkdir -> rk_mkdir

Change-Id: Ic149500037abf446434332bf6ba67dfb3906cd72
2013-07-27 19:13:17 -04:00
Nicolas Williams
f4f89ac8e0 Fix bug with use strongest session key feature 2013-07-27 03:21:12 -05:00
Love Hornquist Astrand
afa9db62ba match code, pointed out by Sergio Gelato <Sergio.Gelato@astro.su.se> 2013-07-26 10:35:49 +02:00
Love Hornquist Astrand
1a8038d8a6 don't free armor_ccache, since krb5_cc are not yet ref counted 2013-07-19 14:56:01 +02:00
Love Hornquist Astrand
39abb10aa9 move where we reset etypelist 2013-07-18 16:36:08 +02:00
Love Hornquist Astrand
82d71b063b support db6 too, based on patch from Lars Wendler <wendler@fasihi.net> 2013-07-18 14:58:54 +02:00
Love Hornquist Astrand
f8fb62ff1b remember to free auth_data 2013-07-18 14:58:54 +02:00
Nico Williams
ea1e3776fb heim_ipc is not available on Win32 yet 2013-07-16 21:06:34 -05:00
Love Hornquist Astrand
f49339f31b make fast work with mit kerberos 2013-07-16 15:31:30 +02:00
Love Hornquist Astrand
ad74581850 add KRB5_PADATA_FX_FAST_ARMOR to the fast armor data 2013-07-16 15:17:25 +02:00
Love Hornquist Astrand
5be2888433 add auth_data bits 2013-07-16 15:14:57 +02:00
Love Hornquist Astrand
b4d1168557 add auth_data 2013-07-16 15:13:31 +02:00
Love Hornquist Astrand
bee5290cc3 add KERB-ARMOR-SERVICE-REPLY 2013-07-16 15:12:43 +02:00
Love Hornquist Astrand
28611511ec adopt _krb5_get_ad 2013-07-16 15:10:24 +02:00
Love Hornquist Astrand
4d799bdd26 support derive key and prf for des3 2013-07-16 15:00:19 +02:00
Love Hornquist Astrand
d41f005cc1 add _krb5_get_ad 2013-07-16 14:57:03 +02:00
Love Hornquist Astrand
9f979d20d7 prefix json functions 2013-07-16 13:06:57 +02:00
Jeffrey Altman
72e6a0f383 fcache: correct build errors on Windows
Windows does not have getuid().

Change-Id: Ib92785716b056a69e42c32ec122d8a5f6f12ffbe

Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
2013-07-16 12:44:36 +02:00
Love Hornquist Astrand
884b007938 Check owner too 2013-07-12 17:20:41 +02:00
Love Hornquist Astrand
f396f66523 add [libdefaults]fcache_strict_checking to gate the strict checking, defaults to on 2013-07-11 21:17:49 +02:00
Love Hornquist Astrand
2a565482f4 More strict fcache rules
- use O_NOFOLLOW
- be more strict not to follow symlinks
- require cache files to be owned by the user
- have sane permissions (not group/other readable)
2013-07-11 19:29:04 +02:00
Love Hornquist Astrand
3ad1bf2dcc provide O_NOFOLLOW if there is non 2013-07-10 22:06:19 +02:00
Love Hornquist Astrand
44ddd05ec1 honor env when not issuid 2013-07-10 22:02:43 +02:00
Love Hornquist Astrand
403f599dbd better error reporting 2013-07-10 21:50:23 +02:00
Ben Kaduk
5dfaa0d10b Be friendly to krb5_generate_random_block consumers
Allow them to disable the EGD/profile access and the use of a
random seed file.

These facilities are not tenable when running in the kernel.
2013-07-03 23:17:38 -05:00
Love Hornquist Astrand
786e790f2c mdoc uses the .Lk macro to mark up hyperlinks (from Igor Sobrado <sobrado@orion.ciencias.uniovi.es>) 2013-06-27 19:41:10 +02:00
Igor Sobrado
be204adf4c Add more documentation links to section 8 pages
As kerberos(8) provides a brief outline of this network authentication
system I would suggest extending SEE ALSO to include a few section 8
commands.  I have excluded kadmind(8) and kpasswdd(8) as these servers
can be easily reachable from kadmin(8) and kpasswd(8) manual pages
respectively.

Signed-off-by: Love Hornquist Astrand <lha@h5l.org>
2013-06-27 09:33:08 +02:00
Jeffrey Altman
5f138a16ef libkrb5: Add missing KRB5_LIB_FUNCTION/KRB5_LIB_CALL
KRB5_LIB_FUNCTION and KRB5_LIB_CALL are necessary even on private
functions that are exported.

Change-Id: Iccd0cfe87ff0a9d851e29890e9cb55b3ae517ce1
2013-06-22 21:17:32 -04:00
Jeffrey Altman
dd47d25e5d libkrb5: No fchmod on Windows
There is no fchmod() implementation on Windows.  For now prevent its
use on Windows with #ifndef _WIN32 but in the future set_default_cache()
should be updated to set ownership permissions for the cache file.

Change-Id: I57214dfecbd25d7b337a568fa5e522c0a22dbb76
2013-06-22 21:17:29 -04:00
Jeffrey Altman
57d55d2b81 libkrb5: replace mkdir with rk_mkdir in dcache.c
Now that libroken provides rk_mkdir(), use it.

Change-Id: Ibf208e45cc36b85198bcb266267bf4665f32ba2f
2013-06-22 21:17:27 -04:00
Jeffrey Altman
8fa446d75c roken: Add rk_mkdir()
The Windows version of mkdir() does not share the same signature
as the POSIX version.  Add rk_mkdir() with an POSIX compliant signature
to libroken.  The current implementation ignores the 'mode' parameter
on Windows but a future implementation could provide the required
functionality with native Win32 APIs.

Change-Id: I084d42e0f27932e9b8131d310dbf34849f5fe4b6
2013-06-22 21:17:26 -04:00
Jeffrey Altman
de305a6f4c roken: Define S_IRWXU and friends on Windows
POSIX mkdir (unlike the Windows version) takes a 'mode_t' parameter.
Provide definitions for the mode_t constants.

Change-Id: Ie57e746aa3e579e28f93064ab430f1128508cc84
2013-06-22 21:17:24 -04:00
Jeffrey Altman
63735cc066 roken: include direct.h if HAVE_DIRECT_H
the prototype for "mkdir() on Windows is provided by direct.h.

Change-Id: I15c1d8fcc6fe58ba763bae236e92cfac958c66d1
2013-06-22 21:17:23 -04:00
Jeffrey Altman
bdfb19128d roken: build writev.c on Windows
Change-Id: I3c3fb4abb7cd093355c26b4a18366fa2b5a3224c
2013-06-22 21:17:22 -04:00
Jeffrey Altman
9547a2ca9e Avoid unused variable warning on Windows
Windows has neither O_NONBLOCK nor FIOBIO and sockets aren't file
descriptors in any case.  Avoid warning that 'flags' is unused in
socket_set_nonblocking().

Change-Id: I431cfae3a88577e75b5230f645639b5a17832f5c
2013-06-22 21:17:20 -04:00
Jeffrey Altman
b07058dbe1 Build new lib/krb5 sources on Windows
db_plugin.c
   dcache.c
   plugin.c

Change-Id: Icb67253d8c1cb8a368c886010e7b4aedca61348c
2013-06-22 21:17:19 -04:00
Jeffrey Altman
8fe301c692 Include krb5-private.h in gssapi/ntlm/crypto.c
Instead of locally defining prototypes for private functions
_krb5_crc_update and _krb5_crc_init_table simply include
krb5-private.h.

Change-Id: Ia7931f8df2e68eb038d112797edfd456ffcdd23a
2013-06-22 21:17:18 -04:00
Jeffrey Altman
ab72ccbab3 Export missing asn1 and hx509 functions on Windows
der_copy_unsigned64
der_free_unsigned64
der_get_integer64
encode_KDCFastCookie
encode_KDCFastState
free_KDCFastCookie
free_KDCFastState
hx509_revoke_print

Change-Id: I29d96705d1ac811109719b6358dc0932c72e8df8
2013-06-22 21:17:16 -04:00
Jeffrey Altman
a97c9c9be4 avoid "*/" outside of comment warning on Windows
Separate the "*" meant to indicate a pointer from "/*" which begins
and end of line comment.

Change-Id: Ib671aace4f493b58ea9d43c11642c7c1896f773f
2013-06-22 21:17:15 -04:00
Jeffrey Altman
eccbdac238 Remove unused variable
Change-Id: Id0249ead009e0a544913460aec15a3abc5bc0f98
2013-06-22 21:17:13 -04:00