Commit Graph

18164 Commits

Author SHA1 Message Date
Jeffrey Altman
c64d4ce968 krb5: krb5_enctype_to_keytype cast krb5_enctype to krb5_keytype
The struct _krb5_key_type.type is krb5_enctype.   Cast it to
krb5_keytype before assigning to the 'krb5_keytype *keytype'
output variable to avoid a warning from Clang 1500 on Darwin.
2023-06-06 09:11:29 -04:00
Nicolas Williams
692187e5d6 ipropd-slave: Fetch new credentials more often
If the master is unreachable for a while we can end up with expired
tickets that don't get refreshed, then ipropd-slave gets stuck until
it's manually restarted.
2023-05-31 13:57:32 -05:00
Nicolas Williams
3e2c1c83b4 base: Translate context init error codes 2023-05-27 16:30:25 -05:00
Nicolas Williams
bc4e6591af base: Do support /dev/null as a config file 2023-05-27 16:30:25 -05:00
Taylor R Campbell
a142767598 Fix ctype.h misuse.
Excluded: libtomath and libedit files, most of which appear to be
testing or example code not involved in production, and which are
derived from an upstream that should perhaps have patches submitted
upstream instead.

fix https://github.com/heimdal/heimdal/issues/1111
2023-05-26 14:10:11 -05:00
Nicolas Williams
39f24c4cd4 krb5: Fix crash in resolving "DIR" as a ccache name (Fix #1108) 2023-05-26 13:47:26 -05:00
Nicolas Williams
04933966e6 wind: Fix build (snprintf overflow warning in test) 2023-05-26 13:07:45 -05:00
Jeffrey Altman
61dc4ff8df krb5: fixup crypto.c avoid realloc to trim memory allocation
1b1ff8fdd5 ("krb5: crypto.c avoid realloc
to trim memory allocation") removed the realloc() but failed to assign
'p' to 'result->data'.
2023-05-03 17:18:01 -04:00
Jeffrey Altman
1b1ff8fdd5 krb5: crypto.c avoid realloc to trim memory allocation
decrypt_internal_derived(), decrypt_internal_enc_then_cksum(),
decrypt_internal(), and decrypt_internal_special() execute the
following pattern where 'p' is an allocation of size 'len'

  l = len - n
  memmove(p, p + n, l);
  result->data = realloc(p, l);
  if (result->data == NULL && l != 0) {
      free(p);
      return krb5_enomem(context);
  }
  result->length = l;

which when compiled by gcc 13.0.1-0.12.fc38 or gcc-13.0.1-0.13.fc39
generates the following warning

  warning: pointer 'p' may be used after 'realloc' [-Wuse-after-free]

The C language specification indicates that it is only safe to free()
the pointer passed to realloc() if errno is set to ENOMEM.  Yet the
warning is generated by the following pattern

  l = len - n
  memmove(p, p + n, l);
  errno = 0;
  result->data = realloc(p, l);
  if (result->data == NULL && l != 0) {
      if (errno == ENOMEM)
          free(p);
      return krb5_enomem(context);
  }
  result->length = l;

The value of performing the realloc() is questionable.  realloc()
in many cases will need to perform a second allocation of the
smaller size and then perform a memcpy() which will slow down
the operation without saving much memory.  The allocation is already
very small.

This change avoids the warning by removing the realloc() entirely.
2023-05-03 17:02:34 -04:00
Robert Manner
bcbe816962 spnego/context_storage: undef sc_flags (for hpux)
On hpux this is seems to be a define from sys/signal.h:

which renders the variable name invalid.
2023-02-06 18:17:48 -06:00
Norbert Bokor
14aca7a831 heimdal/asn1: do not throw error when trying to allocate 0 bytes of memory 2023-02-06 18:17:48 -06:00
Robert Manner
6dc36f99c0 heimbase-atomics.h: replace heim_base_atomic_barrier with syntax valid noop
in case there is no implementation available.
2023-02-06 18:17:48 -06:00
Nicolas Williams
48382936e5 hcrypto: Fix performance regression 2023-01-27 11:00:23 -06:00
Luke Howard
dffa545f81 gss: colaesce DCE_STYLE padding/trailer buffer check 2023-01-17 17:57:30 +11:00
Luke Howard
dc682769c4 gss: use mechglue instead of gssntlm encoders
Replace calls to {en,de}code...() with mechglue equivalents.
2023-01-16 19:11:03 +11:00
Luke Howard
363e7d1e0f gss: don't truncate authtime in gsskrb5_extract_authtime_from_sec_context()
The interface between the krb5 mechanism and the mechglue API
gsskrb5_extract_authtime_from_sec_context() assumed the authtime would fit into
an uint32_t, which is not the case on platforms where time_t is 64-bit.

Fixes: #1073
2023-01-16 09:16:39 +11:00
Luke Howard
98858aa215 gss: add 64-bit int {en,de}coders to mechglue 2023-01-16 09:16:39 +11:00
Luke Howard
fbd091d65e gss: use mechglue instead of gsskrb5 encoders
Replace calls to _gsskrb5_{en,de}code...() with mechglue equivalents.
2023-01-16 09:16:39 +11:00
Nicolas Williams
efdd6c589d base: Fix fallback atomics 2023-01-11 12:59:12 -06:00
Nicolas Williams
08c48c10c8 base: Add atomic CAS macros/functions 2023-01-10 23:28:33 -06:00
Nicolas Williams
33f90a6604 krb5: Document pkinit_revoke (fix #991) 2023-01-09 23:00:08 -06:00
Nicolas Williams
829f07eed3 krb5: Always fseek before fwrite in storage_stdio 2023-01-09 13:22:13 -06:00
Luke Howard
04b3c124ca roken: ROKEN_xxx_ATTRIBUTE macros
Add ROKEN_xxx_ATTRIBUTE macros, derived from krb5-types.h, to aid compiling
with compilers that don't have __attribute__ defined.
2023-01-09 14:09:13 -05:00
Robert Manner
914976aca6 krb5/store_stdio.c: workaround for solaris10/hpux/aix fread/fwrite duplication bug 2023-01-09 10:09:26 -06:00
Robert Manner
64a55c30fa roken/mkdtemp.c: fix incorrect indexing
Both the len and the index was decremented, which made the exit
condition (template[len - i] == 'X') trigger before it should.
Fixes solaris10 where mkdtemp is not available.
2023-01-09 10:04:35 -06:00
Nicolas Williams
d3b08638f9 krb5: Fix wrong cast in _krb5_store_data_at_offset() 2023-01-07 11:08:00 -06:00
Luke Howard
8c25c0d46a base: support for 64-bit atomic increment/decrement 2023-01-07 21:45:01 +11:00
Luke Howard
8fcf05ac2e base: wrap __machine_rw_barrier() in function for Solaris
__machine_rw_barrier() assembly expansion cannot be treated as a function call
(as it is later in the heim_base_atomic_store() macro definition)
2023-01-07 21:33:43 +11:00
Luke Howard
d33e3b0523 roken: declare rk_freeifaddrs() prototype if using system ifaddrs.h 2023-01-07 21:33:39 +11:00
Luke Howard
69b417e915 roken: use correct calling conventions for rk_getifaddrs() 2023-01-07 21:33:33 +11:00
Luke Howard
4e449baa29 base: add back libheimbase HEIMDAL_xxx_ATTRIBUTEs
Fix regression introduced in 62f83ad0 by adding HEIMDAL_NORETURN_ATTRIBUTE and
HEIMDAL_PRINTF_ATTRIBUTE to function definitions, so they will be included in
heimbase-protos.h.
2023-01-07 20:11:13 +11:00
Luke Howard
44e52a32b3 ipc: fix Solaris build
Link libheim_ipcc against -lsocket on Solaris
2023-01-07 12:08:39 +11:00
Luke Howard
ed93098365 krb5: include config.h before string.h
Solaris requires __EXTENSIONS__ to be defined before including string.h so that
the strnlen() prototype is visible
2023-01-07 12:08:35 +11:00
Luke Howard
666ee41759 roken: fix Solaris build
libroken needs to be linked against libsocket for socket()
2023-01-07 12:08:30 +11:00
Luke Howard
62f83ad024 base: don't duplicate prototypes in heimbase.h 2023-01-07 12:08:25 +11:00
Luke Howard
b3f6f4c125 base: include config.h
Solaris requires __EXTENSIONS__ to be defined before including string.h so that
the strnlen() prototype is visible
2023-01-07 11:40:48 +11:00
Luke Howard
37f7c5476d roken: fix Solaris build
libroken needs to be linked against libnsl for inet_ntoa()
2023-01-07 11:40:44 +11:00
Nicolas Williams
ece456b028 krb5: Do not fail to rd_req if no AD-KDC-ISSUED
We reject tickets that have no AD-KDC-ISSUED(!).

This was reported by Samba.  The workaround they found was to set
check_pac = true in krb5.conf, as that clobbers the ret from
krb5_ticket_get_authorization_data_type() not having found an
AD-KDC-ISSUED element.

This was introduced in 1cede09a0b.
2023-01-05 17:57:36 -06:00
Nicolas Williams
b87b813fee sanon: Fix export/import_cred mismatch
SANON cred export/import never worked correctly as the export function was
producing the wrong form of token, which was leading gss_import_cred() to
allocate more than 64MB of memory to parse the SANON exported credential.  The
recent change to reduce the default `max_alloc` of krb5_storage exposed this.
2023-01-05 16:58:57 -06:00
Nicolas Williams
ad86671923 kadm5: Fix return value non-checking 2023-01-04 16:22:12 -06:00
Nicolas Williams
5725353a36 negoex: Fix incorrect ENOMEM check in storage_from_memory() 2023-01-04 16:21:34 -06:00
Nicolas Williams
3bdb1167c2 gsskrb5: Explicitly ignore return from _gsskrb5_lifetime_left() 2023-01-04 16:21:11 -06:00
Nicolas Williams
f99145ad78 gsskrb5: Add missing unlock in _gsskrb5_duplicate_cred() failure case 2023-01-04 16:20:32 -06:00
Nicolas Williams
485b5d575a hxtool: Check hx509_request_init() return 2023-01-04 16:17:57 -06:00
Nicolas Williams
fefc380568 krb5: Quiet warning in socket_free() 2023-01-04 16:17:30 -06:00
Nicolas Williams
45cd575d83 krb5: Reduce storage max_alloc 2023-01-04 16:17:09 -06:00
Nicolas Williams
ae4ccb87da asn1: Don't check for NULL when it's not (template_members()) 2023-01-04 16:07:13 -06:00
Nicolas Williams
933f805079 wind: Quiet warnings in idn-lookup utility 2023-01-04 16:06:06 -06:00
Nicolas Williams
ede0c59d4b ipc: Quiet warning about ignoring fcntl() and chmod() return values 2023-01-04 16:05:38 -06:00
Nicolas Williams
c157054c51 roken: Move dead code in rk_time_add/sub() into #ifdefs 2023-01-04 16:05:04 -06:00