summaryrefslogtreecommitdiffstats
path: root/crypto/heimdal/lib
diff options
context:
space:
mode:
authormarkm <markm@FreeBSD.org>2000-02-24 11:07:16 +0000
committermarkm <markm@FreeBSD.org>2000-02-24 11:07:16 +0000
commitfa8b1a96d3a4e7cb6123f48b6c27b717a5ed86fe (patch)
tree2e1873a5f9196289affc301c4d3c862d04a3f4c8 /crypto/heimdal/lib
parent4ecbd6db44d79348bc815f31096e53104f50838b (diff)
downloadFreeBSD-src-fa8b1a96d3a4e7cb6123f48b6c27b717a5ed86fe.zip
FreeBSD-src-fa8b1a96d3a4e7cb6123f48b6c27b717a5ed86fe.tar.gz
Vendor import of Heimdal 0.2n
Diffstat (limited to 'crypto/heimdal/lib')
-rw-r--r--crypto/heimdal/lib/gssapi/8003.c26
-rw-r--r--crypto/heimdal/lib/gssapi/ChangeLog19
-rw-r--r--crypto/heimdal/lib/gssapi/Makefile.am4
-rw-r--r--crypto/heimdal/lib/gssapi/Makefile.in4
-rw-r--r--crypto/heimdal/lib/gssapi/context_time.c6
-rw-r--r--crypto/heimdal/lib/gssapi/delete_sec_context.c12
-rw-r--r--crypto/heimdal/lib/gssapi/get_mic.c22
-rw-r--r--crypto/heimdal/lib/gssapi/unwrap.c24
-rw-r--r--crypto/heimdal/lib/gssapi/verify_mic.c22
-rw-r--r--crypto/heimdal/lib/gssapi/wrap.c24
-rw-r--r--crypto/heimdal/lib/hdb/hdb_locl.h5
-rw-r--r--crypto/heimdal/lib/kadm5/ChangeLog9
-rw-r--r--crypto/heimdal/lib/kadm5/Makefile.am4
-rw-r--r--crypto/heimdal/lib/kadm5/Makefile.in4
-rw-r--r--crypto/heimdal/lib/kadm5/init_c.c7
-rw-r--r--crypto/heimdal/lib/krb5/Makefile.am4
-rw-r--r--crypto/heimdal/lib/krb5/Makefile.in4
-rw-r--r--crypto/heimdal/lib/krb5/context.c4
-rw-r--r--crypto/heimdal/lib/krb5/crypto.c131
-rw-r--r--crypto/heimdal/lib/krb5/expand_hostname.c42
-rw-r--r--crypto/heimdal/lib/krb5/get_in_tkt.c6
-rw-r--r--crypto/heimdal/lib/krb5/init_creds_pw.c10
-rw-r--r--crypto/heimdal/lib/krb5/keytab.c8
-rw-r--r--crypto/heimdal/lib/krb5/keytab_memory.c6
-rw-r--r--crypto/heimdal/lib/krb5/krb5-protos.h13
-rw-r--r--crypto/heimdal/lib/krb5/krb5.h12
-rw-r--r--crypto/heimdal/lib/krb5/mk_req.c50
-rw-r--r--crypto/heimdal/lib/krb5/principal.c47
-rw-r--r--crypto/heimdal/lib/krb5/rd_cred.c6
-rw-r--r--crypto/heimdal/lib/krb5/rd_priv.c18
-rw-r--r--crypto/heimdal/lib/krb5/rd_req.c14
-rw-r--r--crypto/heimdal/lib/krb5/rd_safe.c6
-rw-r--r--crypto/heimdal/lib/krb5/replay.c19
-rw-r--r--crypto/heimdal/lib/krb5/time.c14
-rw-r--r--crypto/heimdal/lib/krb5/transited.c10
-rw-r--r--crypto/heimdal/lib/krb5/verify_init.c12
-rw-r--r--crypto/heimdal/lib/roken/ChangeLog28
-rw-r--r--crypto/heimdal/lib/roken/Makefile.am5
-rw-r--r--crypto/heimdal/lib/roken/Makefile.in8
-rw-r--r--crypto/heimdal/lib/roken/mini_inetd.c24
-rw-r--r--crypto/heimdal/lib/roken/print_version.c6
-rw-r--r--crypto/heimdal/lib/roken/roken-common.h14
-rw-r--r--crypto/heimdal/lib/roken/simple_exec.c29
-rw-r--r--crypto/heimdal/lib/roken/strcollect.c96
-rw-r--r--crypto/heimdal/lib/roken/xdbm.h14
45 files changed, 537 insertions, 315 deletions
diff --git a/crypto/heimdal/lib/gssapi/8003.c b/crypto/heimdal/lib/gssapi/8003.c
index 61fe215..f37fe04 100644
--- a/crypto/heimdal/lib/gssapi/8003.c
+++ b/crypto/heimdal/lib/gssapi/8003.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "gssapi_locl.h"
-RCSID("$Id: 8003.c,v 1.5 1999/12/02 17:05:03 joda Exp $");
+RCSID("$Id: 8003.c,v 1.6 2000/01/25 23:10:13 assar Exp $");
static krb5_error_code
encode_om_uint32(OM_uint32 n, u_char *p)
@@ -57,32 +57,32 @@ hash_input_chan_bindings (const gss_channel_bindings_t b,
u_char *p)
{
u_char num[4];
- struct md5 md5;
+ MD5_CTX md5;
- md5_init(&md5);
+ MD5Init(&md5);
encode_om_uint32 (b->initiator_addrtype, num);
- md5_update (&md5, num, sizeof(num));
+ MD5Update (&md5, num, sizeof(num));
encode_om_uint32 (b->initiator_address.length, num);
- md5_update (&md5, num, sizeof(num));
+ MD5Update (&md5, num, sizeof(num));
if (b->initiator_address.length)
- md5_update (&md5,
+ MD5Update (&md5,
b->initiator_address.value,
b->initiator_address.length);
encode_om_uint32 (b->acceptor_addrtype, num);
- md5_update (&md5, num, sizeof(num));
+ MD5Update (&md5, num, sizeof(num));
encode_om_uint32 (b->acceptor_address.length, num);
- md5_update (&md5, num, sizeof(num));
+ MD5Update (&md5, num, sizeof(num));
if (b->acceptor_address.length)
- md5_update (&md5,
+ MD5Update (&md5,
b->acceptor_address.value,
b->acceptor_address.length);
encode_om_uint32 (b->application_data.length, num);
- md5_update (&md5, num, sizeof(num));
+ MD5Update (&md5, num, sizeof(num));
if (b->application_data.length)
- md5_update (&md5,
+ MD5Update (&md5,
b->application_data.value,
b->application_data.length);
- md5_finito (&md5, p);
+ MD5Final (p, &md5);
return 0;
}
diff --git a/crypto/heimdal/lib/gssapi/ChangeLog b/crypto/heimdal/lib/gssapi/ChangeLog
index 2524003..d8f80f4 100644
--- a/crypto/heimdal/lib/gssapi/ChangeLog
+++ b/crypto/heimdal/lib/gssapi/ChangeLog
@@ -1,3 +1,22 @@
+2000-02-07 Assar Westerlund <assar@sics.se>
+
+ * Makefile.am: set version to 0:5:0
+
+2000-01-26 Assar Westerlund <assar@sics.se>
+
+ * delete_sec_context.c (gss_delete_sec_context): handle a NULL
+ output_token
+
+ * wrap.c: update to pseudo-standard APIs for md4,md5,sha. some
+ changes to libdes calls to make them more portable.
+ * verify_mic.c: update to pseudo-standard APIs for md4,md5,sha.
+ some changes to libdes calls to make them more portable.
+ * unwrap.c: update to pseudo-standard APIs for md4,md5,sha. some
+ changes to libdes calls to make them more portable.
+ * get_mic.c: update to pseudo-standard APIs for md4,md5,sha. some
+ changes to libdes calls to make them more portable.
+ * 8003.c: update to pseudo-standard APIs for md4,md5,sha.
+
2000-01-06 Assar Westerlund <assar@sics.se>
* Makefile.am: set version to 0:4:0
diff --git a/crypto/heimdal/lib/gssapi/Makefile.am b/crypto/heimdal/lib/gssapi/Makefile.am
index ff4ef63..72bdf45 100644
--- a/crypto/heimdal/lib/gssapi/Makefile.am
+++ b/crypto/heimdal/lib/gssapi/Makefile.am
@@ -1,11 +1,11 @@
-# $Id: Makefile.am,v 1.17 2000/01/06 21:47:40 assar Exp $
+# $Id: Makefile.am,v 1.19 2000/02/07 04:00:51 assar Exp $
include $(top_srcdir)/Makefile.am.common
INCLUDES += -I$(srcdir)/../krb5
lib_LTLIBRARIES = libgssapi.la
-libgssapi_la_LDFLAGS = -version-info 0:4:0
+libgssapi_la_LDFLAGS = -version-info 0:5:0
include_HEADERS = gssapi.h
diff --git a/crypto/heimdal/lib/gssapi/Makefile.in b/crypto/heimdal/lib/gssapi/Makefile.in
index 4e658c1..2ecd970 100644
--- a/crypto/heimdal/lib/gssapi/Makefile.in
+++ b/crypto/heimdal/lib/gssapi/Makefile.in
@@ -10,7 +10,7 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-# $Id: Makefile.am,v 1.17 2000/01/06 21:47:40 assar Exp $
+# $Id: Makefile.am,v 1.19 2000/02/07 04:00:51 assar Exp $
# $Id: Makefile.am.common,v 1.3 1999/04/01 14:58:43 joda Exp $
@@ -174,7 +174,7 @@ NROFF_MAN = groff -mandoc -Tascii
CHECK_LOCAL = $(PROGRAMS)
lib_LTLIBRARIES = libgssapi.la
-libgssapi_la_LDFLAGS = -version-info 0:4:0
+libgssapi_la_LDFLAGS = -version-info 0:5:0
include_HEADERS = gssapi.h
diff --git a/crypto/heimdal/lib/gssapi/context_time.c b/crypto/heimdal/lib/gssapi/context_time.c
index 2a04ce8..1882eb3 100644
--- a/crypto/heimdal/lib/gssapi/context_time.c
+++ b/crypto/heimdal/lib/gssapi/context_time.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "gssapi_locl.h"
-RCSID("$Id: context_time.c,v 1.2 1999/12/02 17:05:03 joda Exp $");
+RCSID("$Id: context_time.c,v 1.3 2000/02/06 08:14:16 assar Exp $");
OM_uint32 gss_context_time
(OM_uint32 * minor_status,
@@ -44,7 +44,7 @@ OM_uint32 gss_context_time
OM_uint32 lifetime;
OM_uint32 ret;
krb5_error_code kret;
- int32_t timeret;
+ krb5_timestamp timeret;
gssapi_krb5_init();
diff --git a/crypto/heimdal/lib/gssapi/delete_sec_context.c b/crypto/heimdal/lib/gssapi/delete_sec_context.c
index 514206c..faa77e4 100644
--- a/crypto/heimdal/lib/gssapi/delete_sec_context.c
+++ b/crypto/heimdal/lib/gssapi/delete_sec_context.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997 - 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "gssapi_locl.h"
-RCSID("$Id: delete_sec_context.c,v 1.5 1999/12/26 18:31:06 assar Exp $");
+RCSID("$Id: delete_sec_context.c,v 1.6 2000/01/26 00:45:46 assar Exp $");
OM_uint32 gss_delete_sec_context
(OM_uint32 * minor_status,
@@ -43,8 +43,10 @@ OM_uint32 gss_delete_sec_context
{
gssapi_krb5_init ();
- output_token->length = 0;
- output_token->value = NULL;
+ if (output_token) {
+ output_token->length = 0;
+ output_token->value = NULL;
+ }
krb5_auth_con_free (gssapi_krb5_context,
(*context_handle)->auth_context);
@@ -58,7 +60,5 @@ OM_uint32 gss_delete_sec_context
krb5_free_ticket (gssapi_krb5_context,
(*context_handle)->ticket);
free (*context_handle);
- if (output_token)
- output_token->length = 0;
return GSS_S_COMPLETE;
}
diff --git a/crypto/heimdal/lib/gssapi/get_mic.c b/crypto/heimdal/lib/gssapi/get_mic.c
index 2b779c7..8dd1b6f 100644
--- a/crypto/heimdal/lib/gssapi/get_mic.c
+++ b/crypto/heimdal/lib/gssapi/get_mic.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "gssapi_locl.h"
-RCSID("$Id: get_mic.c,v 1.9 1999/12/02 17:05:03 joda Exp $");
+RCSID("$Id: get_mic.c,v 1.11 2000/01/25 23:19:22 assar Exp $");
OM_uint32 gss_get_mic
(OM_uint32 * minor_status,
@@ -44,7 +44,7 @@ OM_uint32 gss_get_mic
)
{
u_char *p;
- struct md5 md5;
+ MD5_CTX md5;
u_char hash[16];
des_key_schedule schedule;
des_cblock key;
@@ -73,17 +73,17 @@ OM_uint32 gss_get_mic
p += 16;
/* checksum */
- md5_init (&md5);
- md5_update (&md5, p - 24, 8);
- md5_update (&md5, message_buffer->value,
- message_buffer->length);
- md5_finito (&md5, hash);
+ MD5Init (&md5);
+ MD5Update (&md5, p - 24, 8);
+ MD5Update (&md5, message_buffer->value,
+ message_buffer->length);
+ MD5Final (hash, &md5);
memset (&zero, 0, sizeof(zero));
gss_krb5_getsomekey(context_handle, &key);
des_set_key (&key, schedule);
- des_cbc_cksum ((des_cblock *)hash,
- (des_cblock *)hash, sizeof(hash), schedule, &zero);
+ des_cbc_cksum ((const void *)hash, (void *)hash, sizeof(hash),
+ schedule, &zero);
memcpy (p - 8, hash, 8);
/* sequence number */
@@ -101,7 +101,7 @@ OM_uint32 gss_get_mic
4);
des_set_key (&key, schedule);
- des_cbc_encrypt ((des_cblock *)p, (des_cblock *)p, 8,
+ des_cbc_encrypt ((const void *)p, (void *)p, 8,
schedule, (des_cblock *)(p + 8), DES_ENCRYPT);
krb5_auth_setlocalseqnumber (gssapi_krb5_context,
diff --git a/crypto/heimdal/lib/gssapi/unwrap.c b/crypto/heimdal/lib/gssapi/unwrap.c
index 45b1df1..210bab1 100644
--- a/crypto/heimdal/lib/gssapi/unwrap.c
+++ b/crypto/heimdal/lib/gssapi/unwrap.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "gssapi_locl.h"
-RCSID("$Id: unwrap.c,v 1.10 1999/12/02 17:05:04 joda Exp $");
+RCSID("$Id: unwrap.c,v 1.11 2000/01/25 23:13:38 assar Exp $");
OM_uint32
gss_krb5_getsomekey(const gss_ctx_id_t context_handle,
@@ -70,7 +70,7 @@ OM_uint32 gss_unwrap
{
u_char *p, *pad;
size_t len;
- struct md5 md5;
+ MD5_CTX md5;
u_char hash[16], seq_data[8];
des_key_schedule schedule;
des_cblock key;
@@ -114,8 +114,8 @@ OM_uint32 gss_unwrap
key[i] ^= 0xf0;
des_set_key (&key, schedule);
memset (&zero, 0, sizeof(zero));
- des_cbc_encrypt ((des_cblock *)p,
- (des_cblock *)p,
+ des_cbc_encrypt ((const void *)p,
+ (void *)p,
input_message_buffer->length - len,
schedule,
&zero,
@@ -134,16 +134,16 @@ OM_uint32 gss_unwrap
if (i != 0)
return GSS_S_BAD_MIC;
- md5_init (&md5);
- md5_update (&md5, p - 24, 8);
- md5_update (&md5, p, input_message_buffer->length - len);
- md5_finito (&md5, hash);
+ MD5Init (&md5);
+ MD5Update (&md5, p - 24, 8);
+ MD5Update (&md5, p, input_message_buffer->length - len);
+ MD5Final (hash, &md5);
memset (&zero, 0, sizeof(zero));
gss_krb5_getsomekey(context_handle, &key);
des_set_key (&key, schedule);
- des_cbc_cksum ((des_cblock *)hash,
- (des_cblock *)hash, sizeof(hash), schedule, &zero);
+ des_cbc_cksum ((const void *)hash, (void *)hash, sizeof(hash),
+ schedule, &zero);
if (memcmp (p - 8, hash, 8) != 0)
return GSS_S_BAD_MIC;
@@ -162,7 +162,7 @@ OM_uint32 gss_unwrap
p -= 16;
des_set_key (&key, schedule);
- des_cbc_encrypt ((des_cblock *)p, (des_cblock *)p, 8,
+ des_cbc_encrypt ((const void *)p, (void *)p, 8,
schedule, (des_cblock *)hash, DES_DECRYPT);
memset (key, 0, sizeof(key));
diff --git a/crypto/heimdal/lib/gssapi/verify_mic.c b/crypto/heimdal/lib/gssapi/verify_mic.c
index d4342a6..1cc4c52 100644
--- a/crypto/heimdal/lib/gssapi/verify_mic.c
+++ b/crypto/heimdal/lib/gssapi/verify_mic.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "gssapi_locl.h"
-RCSID("$Id: verify_mic.c,v 1.8 1999/12/02 17:05:04 joda Exp $");
+RCSID("$Id: verify_mic.c,v 1.9 2000/01/25 23:14:47 assar Exp $");
OM_uint32 gss_verify_mic
(OM_uint32 * minor_status,
@@ -44,7 +44,7 @@ OM_uint32 gss_verify_mic
)
{
u_char *p;
- struct md5 md5;
+ MD5_CTX md5;
u_char hash[16], seq_data[8];
des_key_schedule schedule;
des_cblock key;
@@ -68,11 +68,11 @@ OM_uint32 gss_verify_mic
p += 16;
/* verify checksum */
- md5_init (&md5);
- md5_update (&md5, p - 24, 8);
- md5_update (&md5, message_buffer->value,
- message_buffer->length);
- md5_finito (&md5, hash);
+ MD5Init (&md5);
+ MD5Update (&md5, p - 24, 8);
+ MD5Update (&md5, message_buffer->value,
+ message_buffer->length);
+ MD5Final (hash, &md5);
memset (&zero, 0, sizeof(zero));
#if 0
@@ -83,8 +83,8 @@ OM_uint32 gss_verify_mic
sizeof(key));
des_set_key (&key, schedule);
- des_cbc_cksum ((des_cblock *)hash,
- (des_cblock *)hash, sizeof(hash), schedule, &zero);
+ des_cbc_cksum ((const void *)hash, (void *)hash, sizeof(hash),
+ schedule, &zero);
if (memcmp (p - 8, hash, 8) != 0) {
memset (key, 0, sizeof(key));
memset (schedule, 0, sizeof(schedule));
@@ -106,7 +106,7 @@ OM_uint32 gss_verify_mic
p -= 16;
des_set_key (&key, schedule);
- des_cbc_encrypt ((des_cblock *)p, (des_cblock *)p, 8,
+ des_cbc_encrypt ((const void *)p, (void *)p, 8,
schedule, (des_cblock *)hash, DES_DECRYPT);
memset (key, 0, sizeof(key));
diff --git a/crypto/heimdal/lib/gssapi/wrap.c b/crypto/heimdal/lib/gssapi/wrap.c
index 98ee689..c71f2b1 100644
--- a/crypto/heimdal/lib/gssapi/wrap.c
+++ b/crypto/heimdal/lib/gssapi/wrap.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "gssapi_locl.h"
-RCSID("$Id: wrap.c,v 1.10 1999/12/02 17:05:04 joda Exp $");
+RCSID("$Id: wrap.c,v 1.11 2000/01/25 23:15:44 assar Exp $");
OM_uint32 gss_wrap_size_limit (
OM_uint32 * minor_status,
@@ -63,7 +63,7 @@ OM_uint32 gss_wrap
)
{
u_char *p;
- struct md5 md5;
+ MD5_CTX md5;
u_char hash[16];
des_key_schedule schedule;
des_cblock key;
@@ -110,16 +110,16 @@ OM_uint32 gss_wrap
memset (p + 8 + input_message_buffer->length, padlength, padlength);
/* checksum */
- md5_init (&md5);
- md5_update (&md5, p - 24, 8);
- md5_update (&md5, p, input_message_buffer->length + padlength + 8);
- md5_finito (&md5, hash);
+ MD5Init (&md5);
+ MD5Update (&md5, p - 24, 8);
+ MD5Update (&md5, p, input_message_buffer->length + padlength + 8);
+ MD5Final (hash, &md5);
memset (&zero, 0, sizeof(zero));
gss_krb5_getsomekey(context_handle, &key);
des_set_key (&key, schedule);
- des_cbc_cksum ((des_cblock *)hash,
- (des_cblock *)hash, sizeof(hash), schedule, &zero);
+ des_cbc_cksum ((const void *)hash, (void *)hash, sizeof(hash),
+ schedule, &zero);
memcpy (p - 8, hash, 8);
/* sequence number */
@@ -137,7 +137,7 @@ OM_uint32 gss_wrap
4);
des_set_key (&key, schedule);
- des_cbc_encrypt ((des_cblock *)p, (des_cblock *)p, 8,
+ des_cbc_encrypt ((const void *)p, (void *)p, 8,
schedule, (des_cblock *)(p + 8), DES_ENCRYPT);
krb5_auth_setlocalseqnumber (gssapi_krb5_context,
@@ -153,8 +153,8 @@ OM_uint32 gss_wrap
key[i] ^= 0xf0;
des_set_key (&key, schedule);
memset (&zero, 0, sizeof(zero));
- des_cbc_encrypt ((des_cblock *)p,
- (des_cblock *)p,
+ des_cbc_encrypt ((const void *)p,
+ (void *)p,
8 + input_message_buffer->length + padlength,
schedule,
&zero,
diff --git a/crypto/heimdal/lib/hdb/hdb_locl.h b/crypto/heimdal/lib/hdb/hdb_locl.h
index 76ba479..5d0a6d0 100644
--- a/crypto/heimdal/lib/hdb/hdb_locl.h
+++ b/crypto/heimdal/lib/hdb/hdb_locl.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997-1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997-2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*/
-/* $Id: hdb_locl.h,v 1.12 1999/12/02 17:05:05 joda Exp $ */
+/* $Id: hdb_locl.h,v 1.13 2000/02/06 05:17:05 assar Exp $ */
#ifndef __HDB_LOCL_H__
#define __HDB_LOCL_H__
@@ -56,6 +56,7 @@
#endif
#include <roken.h>
+#include <des.h>
#include <krb5.h>
#include <hdb.h>
#include <hdb-private.h>
diff --git a/crypto/heimdal/lib/kadm5/ChangeLog b/crypto/heimdal/lib/kadm5/ChangeLog
index 8c04ecb..f5a6ee4 100644
--- a/crypto/heimdal/lib/kadm5/ChangeLog
+++ b/crypto/heimdal/lib/kadm5/ChangeLog
@@ -1,3 +1,12 @@
+2000-02-07 Assar Westerlund <assar@sics.se>
+
+ * Makefile.am (libkadm5clnt_la_LDFLAGS): set version to 4:2:0
+
+2000-01-28 Assar Westerlund <assar@sics.se>
+
+ * init_c.c (get_new_cache): make sure to request non-forwardable,
+ non-proxiable
+
2000-01-06 Assar Westerlund <assar@sics.se>
* Makefile.am (libkadm5srv.la): bump version to 5:1:0
diff --git a/crypto/heimdal/lib/kadm5/Makefile.am b/crypto/heimdal/lib/kadm5/Makefile.am
index 4e043f7..89399d4 100644
--- a/crypto/heimdal/lib/kadm5/Makefile.am
+++ b/crypto/heimdal/lib/kadm5/Makefile.am
@@ -1,10 +1,10 @@
-# $Id: Makefile.am,v 1.32 2000/01/06 21:53:30 assar Exp $
+# $Id: Makefile.am,v 1.33 2000/02/07 03:37:27 assar Exp $
include $(top_srcdir)/Makefile.am.common
lib_LTLIBRARIES = libkadm5srv.la libkadm5clnt.la
libkadm5srv_la_LDFLAGS = -version-info 5:1:0
-libkadm5clnt_la_LDFLAGS = -version-info 4:1:0
+libkadm5clnt_la_LDFLAGS = -version-info 4:2:0
sbin_PROGRAMS = dump_log replay_log
libexec_PROGRAMS = ipropd-master ipropd-slave
diff --git a/crypto/heimdal/lib/kadm5/Makefile.in b/crypto/heimdal/lib/kadm5/Makefile.in
index 0872ca9..233ef9d 100644
--- a/crypto/heimdal/lib/kadm5/Makefile.in
+++ b/crypto/heimdal/lib/kadm5/Makefile.in
@@ -10,7 +10,7 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-# $Id: Makefile.am,v 1.32 2000/01/06 21:53:30 assar Exp $
+# $Id: Makefile.am,v 1.33 2000/02/07 03:37:27 assar Exp $
# $Id: Makefile.am.common,v 1.3 1999/04/01 14:58:43 joda Exp $
@@ -175,7 +175,7 @@ CHECK_LOCAL = $(PROGRAMS)
lib_LTLIBRARIES = libkadm5srv.la libkadm5clnt.la
libkadm5srv_la_LDFLAGS = -version-info 5:1:0
-libkadm5clnt_la_LDFLAGS = -version-info 4:1:0
+libkadm5clnt_la_LDFLAGS = -version-info 4:2:0
sbin_PROGRAMS = dump_log replay_log
libexec_PROGRAMS = ipropd-master ipropd-slave
diff --git a/crypto/heimdal/lib/kadm5/init_c.c b/crypto/heimdal/lib/kadm5/init_c.c
index f6429df..098e9c8 100644
--- a/crypto/heimdal/lib/kadm5/init_c.c
+++ b/crypto/heimdal/lib/kadm5/init_c.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -37,7 +37,7 @@
#include <netinet/in.h>
#include <netdb.h>
-RCSID("$Id: init_c.c,v 1.34 1999/12/20 14:05:49 assar Exp $");
+RCSID("$Id: init_c.c,v 1.35 2000/01/28 03:20:18 assar Exp $");
static void
set_funcs(kadm5_client_context *c)
@@ -145,6 +145,9 @@ get_new_cache(krb5_context context,
krb5_ccache id;
krb5_get_init_creds_opt_init (&opt);
+ krb5_get_init_creds_opt_set_forwardable (&opt, FALSE);
+ krb5_get_init_creds_opt_set_proxiable (&opt, FALSE);
+
if(password == NULL && prompter == NULL) {
krb5_keytab kt;
if(keytab == NULL)
diff --git a/crypto/heimdal/lib/krb5/Makefile.am b/crypto/heimdal/lib/krb5/Makefile.am
index 17551cb..ab2182c 100644
--- a/crypto/heimdal/lib/krb5/Makefile.am
+++ b/crypto/heimdal/lib/krb5/Makefile.am
@@ -1,4 +1,4 @@
-# $Id: Makefile.am,v 1.95 2000/01/08 17:03:51 assar Exp $
+# $Id: Makefile.am,v 1.96 2000/02/07 03:26:21 assar Exp $
include $(top_srcdir)/Makefile.am.common
@@ -119,7 +119,7 @@ libkrb5_la_SOURCES = \
EXTRA_libkrb5_la_SOURCES = keytab_krb4.c
-libkrb5_la_LDFLAGS = -version-info 7:1:0
+libkrb5_la_LDFLAGS = -version-info 8:0:0
$(libkrb5_la_OBJECTS): $(srcdir)/krb5-protos.h $(srcdir)/krb5-private.h
diff --git a/crypto/heimdal/lib/krb5/Makefile.in b/crypto/heimdal/lib/krb5/Makefile.in
index 6f3652e..33429d4 100644
--- a/crypto/heimdal/lib/krb5/Makefile.in
+++ b/crypto/heimdal/lib/krb5/Makefile.in
@@ -10,7 +10,7 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-# $Id: Makefile.am,v 1.95 2000/01/08 17:03:51 assar Exp $
+# $Id: Makefile.am,v 1.96 2000/02/07 03:26:21 assar Exp $
# $Id: Makefile.am.common,v 1.3 1999/04/01 14:58:43 joda Exp $
@@ -195,7 +195,7 @@ libkrb5_la_SOURCES = add_et_list.c addr_families.c address.c aname_to_local
EXTRA_libkrb5_la_SOURCES = keytab_krb4.c
-libkrb5_la_LDFLAGS = -version-info 7:1:0
+libkrb5_la_LDFLAGS = -version-info 8:0:0
libkrb5_la_LIBADD = ../com_err/error.lo ../com_err/com_err.lo
diff --git a/crypto/heimdal/lib/krb5/context.c b/crypto/heimdal/lib/krb5/context.c
index cf25f7b..1a7e941 100644
--- a/crypto/heimdal/lib/krb5/context.c
+++ b/crypto/heimdal/lib/krb5/context.c
@@ -33,7 +33,7 @@
#include "krb5_locl.h"
-RCSID("$Id: context.c,v 1.51 1999/12/02 17:05:08 joda Exp $");
+RCSID("$Id: context.c,v 1.52 2000/02/04 17:10:26 joda Exp $");
#define INIT_FIELD(C, T, E, D, F) \
(C)->E = krb5_config_get_ ## T ## _default ((C), NULL, (D), \
@@ -106,7 +106,7 @@ init_context_from_config_file(krb5_context context)
context->time_fmt = krb5_config_get_string(context, NULL, "libdefaults",
"time_format", NULL);
if(context->time_fmt == NULL)
- context->time_fmt = "%d-%b-%Y %H:%M:%S";
+ context->time_fmt = "%Y-%m-%dT%H:%M:%S";
context->log_utc = krb5_config_get_bool(context, NULL, "libdefaults",
"log_utc", NULL);
diff --git a/crypto/heimdal/lib/krb5/crypto.c b/crypto/heimdal/lib/krb5/crypto.c
index b6db6ce..aef45b1 100644
--- a/crypto/heimdal/lib/krb5/crypto.c
+++ b/crypto/heimdal/lib/krb5/crypto.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -32,7 +32,7 @@
*/
#include "krb5_locl.h"
-RCSID("$Id: crypto.c,v 1.28 2000/01/06 20:21:13 assar Exp $");
+RCSID("$Id: crypto.c,v 1.29 2000/01/25 23:06:55 assar Exp $");
#undef CRYPTO_DEBUG
#ifdef CRYPTO_DEBUG
@@ -228,12 +228,14 @@ DES_AFS3_Transarc_string_to_key (krb5_data pw,
memcpy(&temp_key, "kerberos", 8);
des_set_odd_parity (&temp_key);
des_set_key (&temp_key, schedule);
- des_cbc_cksum ((des_cblock *)password, &ivec, passlen, schedule, &ivec);
+ des_cbc_cksum ((const void *)password, &ivec, passlen,
+ schedule, &ivec);
memcpy(&temp_key, &ivec, 8);
des_set_odd_parity (&temp_key);
des_set_key (&temp_key, schedule);
- des_cbc_cksum ((des_cblock *)password, key, passlen, schedule, &ivec);
+ des_cbc_cksum ((const void *)password, key, passlen,
+ schedule, &ivec);
memset(&schedule, 0, sizeof(schedule));
memset(&temp_key, 0, sizeof(temp_key));
memset(&ivec, 0, sizeof(ivec));
@@ -337,7 +339,8 @@ DES3_string_to_key(krb5_context context,
des_set_key(keys + i, s[i]);
}
memset(&ivec, 0, sizeof(ivec));
- des_ede3_cbc_encrypt((void*)tmp, (void*)tmp, sizeof(tmp),
+ des_ede3_cbc_encrypt((const void *)tmp,
+ (void *)tmp, sizeof(tmp),
s[0], s[1], s[2], &ivec, DES_ENCRYPT);
memset(s, 0, sizeof(s));
memset(&ivec, 0, sizeof(ivec));
@@ -411,7 +414,7 @@ ARCFOUR_string_to_key(krb5_context context,
char *s, *p;
size_t len;
int i;
- struct md4 m;
+ MD4_CTX m;
len = 2 * (password.length + salt.saltvalue.length);
s = malloc (len);
@@ -425,11 +428,11 @@ ARCFOUR_string_to_key(krb5_context context,
*p++ = ((char *)salt.saltvalue.data)[i];
*p++ = 0;
}
- md4_init(&m);
- md4_update(&m, s, len);
+ MD4Init (&m);
+ MD4Update (&m, s, len);
key->keytype = enctype;
krb5_data_alloc (&key->keyvalue, 16);
- md4_finito(&m, key->keyvalue.data);
+ MD4Final (key->keyvalue.data, &m);
memset (s, 0, len);
free (s);
return 0;
@@ -806,10 +809,11 @@ RSA_MD4_checksum(krb5_context context,
size_t len,
Checksum *C)
{
- struct md4 m;
- md4_init(&m);
- md4_update(&m, data, len);
- md4_finito(&m, C->checksum.data);
+ MD4_CTX m;
+
+ MD4Init (&m);
+ MD4Update (&m, data, len);
+ MD4Final (C->checksum.data, &m);
}
static void
@@ -819,18 +823,18 @@ RSA_MD4_DES_checksum(krb5_context context,
size_t len,
Checksum *cksum)
{
- struct md4 md4;
+ MD4_CTX md4;
des_cblock ivec;
unsigned char *p = cksum->checksum.data;
krb5_generate_random_block(p, 8);
- md4_init(&md4);
- md4_update(&md4, p, 8);
- md4_update(&md4, data, len);
- md4_finito(&md4, p + 8);
+ MD4Init (&md4);
+ MD4Update (&md4, p, 8);
+ MD4Update (&md4, data, len);
+ MD4Final (p + 8, &md4);
memset (&ivec, 0, sizeof(ivec));
- des_cbc_encrypt((des_cblock*)p,
- (des_cblock*)p,
+ des_cbc_encrypt((const void *)p,
+ (void *)p,
24,
key->schedule->data,
&ivec,
@@ -844,23 +848,23 @@ RSA_MD4_DES_verify(krb5_context context,
size_t len,
Checksum *C)
{
- struct md4 md4;
+ MD4_CTX md4;
unsigned char tmp[24];
unsigned char res[16];
des_cblock ivec;
krb5_error_code ret = 0;
memset(&ivec, 0, sizeof(ivec));
- des_cbc_encrypt(C->checksum.data,
+ des_cbc_encrypt(C->checksum.data,
(void*)tmp,
C->checksum.length,
key->schedule->data,
&ivec,
DES_DECRYPT);
- md4_init(&md4);
- md4_update(&md4, tmp, 8); /* confounder */
- md4_update(&md4, data, len);
- md4_finito(&md4, res);
+ MD4Init (&md4);
+ MD4Update (&md4, tmp, 8); /* confounder */
+ MD4Update (&md4, data, len);
+ MD4Final (res, &md4);
if(memcmp(res, tmp + 8, sizeof(res)) != 0)
ret = KRB5KRB_AP_ERR_BAD_INTEGRITY;
memset(tmp, 0, sizeof(tmp));
@@ -875,10 +879,11 @@ RSA_MD5_checksum(krb5_context context,
size_t len,
Checksum *C)
{
- struct md5 m;
- md5_init(&m);
- md5_update(&m, data, len);
- md5_finito(&m, C->checksum.data);
+ MD5_CTX m;
+
+ MD5Init (&m);
+ MD5Update(&m, data, len);
+ MD5Final (C->checksum.data, &m);
}
static void
@@ -888,18 +893,18 @@ RSA_MD5_DES_checksum(krb5_context context,
size_t len,
Checksum *C)
{
- struct md5 md5;
+ MD5_CTX md5;
des_cblock ivec;
unsigned char *p = C->checksum.data;
krb5_generate_random_block(p, 8);
- md5_init(&md5);
- md5_update(&md5, p, 8);
- md5_update(&md5, data, len);
- md5_finito(&md5, p + 8);
+ MD5Init (&md5);
+ MD5Update (&md5, p, 8);
+ MD5Update (&md5, data, len);
+ MD5Final (p + 8, &md5);
memset (&ivec, 0, sizeof(ivec));
- des_cbc_encrypt((des_cblock*)p,
- (des_cblock*)p,
+ des_cbc_encrypt((const void *)p,
+ (void *)p,
24,
key->schedule->data,
&ivec,
@@ -913,7 +918,7 @@ RSA_MD5_DES_verify(krb5_context context,
size_t len,
Checksum *C)
{
- struct md5 md5;
+ MD5_CTX md5;
unsigned char tmp[24];
unsigned char res[16];
des_cblock ivec;
@@ -927,10 +932,10 @@ RSA_MD5_DES_verify(krb5_context context,
sched[0],
&ivec,
DES_DECRYPT);
- md5_init(&md5);
- md5_update(&md5, tmp, 8); /* confounder */
- md5_update(&md5, data, len);
- md5_finito(&md5, res);
+ MD5Init (&md5);
+ MD5Update (&md5, tmp, 8); /* confounder */
+ MD5Update (&md5, data, len);
+ MD5Final (res, &md5);
if(memcmp(res, tmp + 8, sizeof(res)) != 0)
ret = KRB5KRB_AP_ERR_BAD_INTEGRITY;
memset(tmp, 0, sizeof(tmp));
@@ -945,19 +950,19 @@ RSA_MD5_DES3_checksum(krb5_context context,
size_t len,
Checksum *C)
{
- struct md5 md5;
+ MD5_CTX md5;
des_cblock ivec;
unsigned char *p = C->checksum.data;
des_key_schedule *sched = key->schedule->data;
krb5_generate_random_block(p, 8);
- md5_init(&md5);
- md5_update(&md5, p, 8);
- md5_update(&md5, data, len);
- md5_finito(&md5, p + 8);
+ MD5Init (&md5);
+ MD5Update (&md5, p, 8);
+ MD5Update (&md5, data, len);
+ MD5Final (p + 8, &md5);
memset (&ivec, 0, sizeof(ivec));
- des_ede3_cbc_encrypt((des_cblock*)p,
- (des_cblock*)p,
+ des_ede3_cbc_encrypt((const void *)p,
+ (void *)p,
24,
sched[0], sched[1], sched[2],
&ivec,
@@ -971,7 +976,7 @@ RSA_MD5_DES3_verify(krb5_context context,
size_t len,
Checksum *C)
{
- struct md5 md5;
+ MD5_CTX md5;
unsigned char tmp[24];
unsigned char res[16];
des_cblock ivec;
@@ -985,10 +990,10 @@ RSA_MD5_DES3_verify(krb5_context context,
sched[0], sched[1], sched[2],
&ivec,
DES_DECRYPT);
- md5_init(&md5);
- md5_update(&md5, tmp, 8); /* confounder */
- md5_update(&md5, data, len);
- md5_finito(&md5, res);
+ MD5Init (&md5);
+ MD5Update (&md5, tmp, 8); /* confounder */
+ MD5Update (&md5, data, len);
+ MD5Final (res, &md5);
if(memcmp(res, tmp + 8, sizeof(res)) != 0)
ret = KRB5KRB_AP_ERR_BAD_INTEGRITY;
memset(tmp, 0, sizeof(tmp));
@@ -1003,10 +1008,11 @@ SHA1_checksum(krb5_context context,
size_t len,
Checksum *C)
{
- struct sha m;
- sha_init(&m);
- sha_update(&m, data, len);
- sha_finito(&m, C->checksum.data);
+ SHA1_CTX m;
+
+ SHA1Init(&m);
+ SHA1Update(&m, data, len);
+ SHA1Final(C->checksum.data, &m);
}
/* HMAC according to RFC2104 */
@@ -2284,11 +2290,12 @@ krb5_get_keyid(krb5_context context,
krb5_keyblock *key,
u_int32_t *keyid)
{
- struct md5 md5;
+ MD5_CTX md5;
unsigned char tmp[16];
- md5_init(&md5);
- md5_update(&md5, key->keyvalue.data, key->keyvalue.length);
- md5_finito(&md5, tmp);
+
+ MD5Init (&md5);
+ MD5Update (&md5, key->keyvalue.data, key->keyvalue.length);
+ MD5Final (tmp, &md5);
*keyid = (tmp[12] << 24) | (tmp[13] << 16) | (tmp[14] << 8) | tmp[15];
return 0;
}
diff --git a/crypto/heimdal/lib/krb5/expand_hostname.c b/crypto/heimdal/lib/krb5/expand_hostname.c
index 698b300..48e9709 100644
--- a/crypto/heimdal/lib/krb5/expand_hostname.c
+++ b/crypto/heimdal/lib/krb5/expand_hostname.c
@@ -33,7 +33,7 @@
#include "krb5_locl.h"
-RCSID("$Id: expand_hostname.c,v 1.5 2000/01/08 08:07:18 assar Exp $");
+RCSID("$Id: expand_hostname.c,v 1.7 2000/02/02 04:42:57 assar Exp $");
static krb5_error_code
copy_hostname(krb5_context context,
@@ -43,6 +43,7 @@ copy_hostname(krb5_context context,
*new_hostname = strdup (orig_hostname);
if (*new_hostname == NULL)
return ENOMEM;
+ strlwr (*new_hostname);
return 0;
}
@@ -78,3 +79,42 @@ krb5_expand_hostname (krb5_context context,
freeaddrinfo (ai);
return copy_hostname (context, orig_hostname, new_hostname);
}
+
+/*
+ * expand `hostname' to a name we believe to be a hostname in newly
+ * allocated space in `host' and return realms in `realms'.
+ */
+
+krb5_error_code
+krb5_expand_hostname_realms (krb5_context context,
+ const char *orig_hostname,
+ char **new_hostname,
+ char ***realms)
+{
+ struct addrinfo *ai, *a, hints;
+ int error;
+ krb5_error_code ret = 0;
+
+ memset (&hints, 0, sizeof(hints));
+ hints.ai_flags = AI_CANONNAME;
+
+ error = getaddrinfo (orig_hostname, NULL, &hints, &ai);
+ if (error)
+ return copy_hostname (context, orig_hostname, new_hostname);
+ for (a = ai; a != NULL; a = a->ai_next) {
+ if (a->ai_canonname != NULL) {
+ ret = copy_hostname (context, orig_hostname, new_hostname);
+ if (ret)
+ goto out;
+ strlwr (*new_hostname);
+ ret = krb5_get_host_realm (context, *new_hostname, realms);
+ if (ret == 0)
+ goto out;
+ free (*new_hostname);
+ }
+ }
+ ret = copy_hostname (context, orig_hostname, new_hostname);
+ out:
+ freeaddrinfo (ai);
+ return ret;
+}
diff --git a/crypto/heimdal/lib/krb5/get_in_tkt.c b/crypto/heimdal/lib/krb5/get_in_tkt.c
index f65af47..e043d1d 100644
--- a/crypto/heimdal/lib/krb5/get_in_tkt.c
+++ b/crypto/heimdal/lib/krb5/get_in_tkt.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "krb5_locl.h"
-RCSID("$Id: get_in_tkt.c,v 1.93 2000/01/06 20:36:28 assar Exp $");
+RCSID("$Id: get_in_tkt.c,v 1.94 2000/02/06 05:18:20 assar Exp $");
krb5_error_code
krb5_init_etype (krb5_context context,
@@ -131,7 +131,7 @@ _krb5_extract_ticket(krb5_context context,
krb5_principal tmp_principal;
int tmp;
time_t tmp_time;
- int32_t sec_now;
+ krb5_timestamp sec_now;
/* compare client */
diff --git a/crypto/heimdal/lib/krb5/init_creds_pw.c b/crypto/heimdal/lib/krb5/init_creds_pw.c
index 84b295f..3caf939 100644
--- a/crypto/heimdal/lib/krb5/init_creds_pw.c
+++ b/crypto/heimdal/lib/krb5/init_creds_pw.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "krb5_locl.h"
-RCSID("$Id: init_creds_pw.c,v 1.36 1999/12/02 17:05:10 joda Exp $");
+RCSID("$Id: init_creds_pw.c,v 1.38 2000/02/07 03:17:20 assar Exp $");
static int
get_config_time (krb5_context context,
@@ -88,7 +88,7 @@ init_cred (krb5_context context,
krb5_error_code ret;
krb5_realm *client_realm;
int tmp;
- int32_t now;
+ krb5_timestamp now;
krb5_timeofday (context, &now);
@@ -164,7 +164,7 @@ print_expire (krb5_context context,
{
int i;
LastReq *lr = &rep->enc_part.last_req;
- int32_t sec;
+ krb5_timestamp sec;
time_t t;
krb5_timeofday (context, &sec);
@@ -353,7 +353,7 @@ change_password (krb5_context context,
ret = (*prompter) (context, data, p, 0, NULL);
free (p);
if (result_code == 0) {
- strncpy (newpw, buf1, newpw_sz);
+ strlcpy (newpw, buf1, newpw_sz);
ret = 0;
} else
ret = ENOTTY;
diff --git a/crypto/heimdal/lib/krb5/keytab.c b/crypto/heimdal/lib/krb5/keytab.c
index af853a4..36ef2f5 100644
--- a/crypto/heimdal/lib/krb5/keytab.c
+++ b/crypto/heimdal/lib/krb5/keytab.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "krb5_locl.h"
-RCSID("$Id: keytab.c,v 1.45 2000/01/02 00:31:20 assar Exp $");
+RCSID("$Id: keytab.c,v 1.46 2000/02/07 03:18:05 assar Exp $");
/*
* Register a new keytab in `ops'
@@ -114,8 +114,7 @@ krb5_kt_resolve(krb5_context context,
krb5_error_code
krb5_kt_default_name(krb5_context context, char *name, size_t namesize)
{
- strncpy(name, context->default_keytab, namesize);
- if(strlen(context->default_keytab) >= namesize)
+ if (strlcpy (name, context->default_keytab, namesize) >= namesize)
return KRB5_CONFIG_NOTENUFSPACE;
return 0;
}
@@ -388,6 +387,7 @@ krb5_kt_add_entry(krb5_context context,
{
if(id->add == NULL)
return KRB5_KT_NOWRITE;
+ entry->timestamp = time(NULL);
return (*id->add)(context, id,entry);
}
diff --git a/crypto/heimdal/lib/krb5/keytab_memory.c b/crypto/heimdal/lib/krb5/keytab_memory.c
index 924b4cd..9fde8d0 100644
--- a/crypto/heimdal/lib/krb5/keytab_memory.c
+++ b/crypto/heimdal/lib/krb5/keytab_memory.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "krb5_locl.h"
-RCSID("$Id: keytab_memory.c,v 1.3 1999/12/02 17:05:10 joda Exp $");
+RCSID("$Id: keytab_memory.c,v 1.4 2000/02/07 03:18:39 assar Exp $");
/* memory operations -------------------------------------------- */
@@ -73,7 +73,7 @@ mkt_get_name(krb5_context context,
char *name,
size_t namesize)
{
- strncpy(name, "", namesize);
+ strlcpy(name, "", namesize);
return 0;
}
diff --git a/crypto/heimdal/lib/krb5/krb5-protos.h b/crypto/heimdal/lib/krb5/krb5-protos.h
index 8813c7a..1b0abdb 100644
--- a/crypto/heimdal/lib/krb5/krb5-protos.h
+++ b/crypto/heimdal/lib/krb5/krb5-protos.h
@@ -966,6 +966,13 @@ krb5_expand_hostname __P((
const char *orig_hostname,
char **new_hostname));
+krb5_error_code
+krb5_expand_hostname_realms __P((
+ krb5_context context,
+ const char *orig_hostname,
+ char **new_hostname,
+ char ***realms));
+
PA_DATA *
krb5_find_padata __P((
PA_DATA *val,
@@ -1617,8 +1624,8 @@ krb5_mk_req __P((
krb5_context context,
krb5_auth_context *auth_context,
const krb5_flags ap_req_options,
- char *service,
- char *hostname,
+ const char *service,
+ const char *hostname,
krb5_data *in_data,
krb5_ccache ccache,
krb5_data *outbuf));
@@ -2157,7 +2164,7 @@ krb5_string_to_salttype __P((
krb5_error_code
krb5_timeofday __P((
krb5_context context,
- int32_t *timeret));
+ krb5_timestamp *timeret));
krb5_error_code
krb5_unparse_name __P((
diff --git a/crypto/heimdal/lib/krb5/krb5.h b/crypto/heimdal/lib/krb5/krb5.h
index 11cabc6..15837e0 100644
--- a/crypto/heimdal/lib/krb5/krb5.h
+++ b/crypto/heimdal/lib/krb5/krb5.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*/
-/* $Id: krb5.h,v 1.162 2000/01/02 00:19:24 assar Exp $ */
+/* $Id: krb5.h,v 1.164 2000/02/06 07:40:57 assar Exp $ */
#ifndef __KRB5_H__
#define __KRB5_H__
@@ -39,7 +39,6 @@
#include <time.h>
#include <krb5-types.h>
-#include <des.h>
#include <asn1_err.h>
#include <krb5_err.h>
#include <heim_err.h>
@@ -83,7 +82,8 @@ typedef enum krb5_cksumtype {
/* CKSUMTYPE_SHA1 = 10,*/
CKSUMTYPE_HMAC_SHA1_DES3 = 12,
CKSUMTYPE_SHA1 = 1000, /* correct value? */
- CKSUMTYPE_HMAC_MD5 = -138 /* unofficial microsoft number */
+ CKSUMTYPE_HMAC_MD5 = -138, /* unofficial microsoft number */
+ CKSUMTYPE_HMAC_MD5_ENC = -1138 /* even more unofficial */
} krb5_cksumtype;
@@ -236,6 +236,10 @@ typedef struct krb5_context_data *krb5_context;
typedef Realm krb5_realm;
typedef const char *krb5_const_realm; /* stupid language */
+
+#define krb5_realm_length(r) strlen(r)
+#define krb5_realm_data(r) (r)
+
typedef Principal krb5_principal_data;
typedef struct Principal *krb5_principal;
typedef const struct Principal *krb5_const_principal;
diff --git a/crypto/heimdal/lib/krb5/mk_req.c b/crypto/heimdal/lib/krb5/mk_req.c
index e92d326..55ecd46 100644
--- a/crypto/heimdal/lib/krb5/mk_req.c
+++ b/crypto/heimdal/lib/krb5/mk_req.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,19 +33,19 @@
#include <krb5_locl.h>
-RCSID("$Id: mk_req.c,v 1.18 1999/12/02 17:05:11 joda Exp $");
+RCSID("$Id: mk_req.c,v 1.20 2000/01/16 10:22:42 assar Exp $");
krb5_error_code
krb5_mk_req(krb5_context context,
krb5_auth_context *auth_context,
const krb5_flags ap_req_options,
- char *service,
- char *hostname,
+ const char *service,
+ const char *hostname,
krb5_data *in_data,
krb5_ccache ccache,
krb5_data *outbuf)
{
- krb5_error_code r;
+ krb5_error_code ret;
krb5_creds this_cred, *cred;
char **realms;
krb5_data realm_data;
@@ -53,45 +53,41 @@ krb5_mk_req(krb5_context context,
memset(&this_cred, 0, sizeof(this_cred));
- r = krb5_cc_get_principal(context, ccache, &this_cred.client);
+ ret = krb5_cc_get_principal(context, ccache, &this_cred.client);
- if(r)
- return r;
+ if(ret)
+ return ret;
- r = krb5_expand_hostname (context, hostname, &real_hostname);
- if (r) {
+ ret = krb5_expand_hostname_realms (context, hostname,
+ &real_hostname, &realms);
+ if (ret) {
krb5_free_principal (context, this_cred.client);
- return r;
+ return ret;
}
- r = krb5_get_host_realm(context, real_hostname, &realms);
- if (r) {
- krb5_free_principal (context, this_cred.client);
- return r;
- }
realm_data.length = strlen(*realms);
realm_data.data = *realms;
- r = krb5_build_principal (context, &this_cred.server,
- strlen(*realms),
- *realms,
- service,
- real_hostname,
- NULL);
+ ret = krb5_build_principal (context, &this_cred.server,
+ strlen(*realms),
+ *realms,
+ service,
+ real_hostname,
+ NULL);
free (real_hostname);
krb5_free_host_realm (context, realms);
- if (r) {
+ if (ret) {
krb5_free_principal (context, this_cred.client);
- return r;
+ return ret;
}
this_cred.times.endtime = 0;
if (auth_context && *auth_context && (*auth_context)->keytype)
this_cred.session.keytype = (*auth_context)->keytype;
- r = krb5_get_credentials (context, 0, ccache, &this_cred, &cred);
- if (r)
- return r;
+ ret = krb5_get_credentials (context, 0, ccache, &this_cred, &cred);
+ if (ret)
+ return ret;
return krb5_mk_req_extended (context,
auth_context,
diff --git a/crypto/heimdal/lib/krb5/principal.c b/crypto/heimdal/lib/krb5/principal.c
index 3fd022d..2999868 100644
--- a/crypto/heimdal/lib/krb5/principal.c
+++ b/crypto/heimdal/lib/krb5/principal.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997-1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997-2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -40,7 +40,7 @@
#endif
#include "resolve.h"
-RCSID("$Id: principal.c,v 1.57 2000/01/08 08:08:03 assar Exp $");
+RCSID("$Id: principal.c,v 1.63 2000/02/07 03:19:05 assar Exp $");
#define princ_num_comp(P) ((P)->name.name_string.len)
#define princ_type(P) ((P)->name.name_type)
@@ -119,7 +119,7 @@ krb5_parse_name(krb5_context context,
ret = ENOMEM;
goto exit;
}
- strncpy(comp[n], start, q - start);
+ memcpy(comp[n], start, q - start);
comp[n][q - start] = 0;
n++;
}
@@ -140,7 +140,7 @@ krb5_parse_name(krb5_context context,
ret = ENOMEM;
goto exit;
}
- strncpy(realm, start, q - start);
+ memcpy(realm, start, q - start);
realm[q - start] = 0;
}else{
ret = krb5_get_default_realm (context, &realm);
@@ -152,7 +152,7 @@ krb5_parse_name(krb5_context context,
ret = ENOMEM;
goto exit;
}
- strncpy(comp[n], start, q - start);
+ memcpy(comp[n], start, q - start);
comp[n][q - start] = 0;
n++;
}
@@ -176,8 +176,8 @@ exit:
return ret;
}
-static const char quotable_chars[] = "\n\t\b\\/@";
-static const char replace_chars[] = "ntb\\/@";
+static const char quotable_chars[] = " \n\t\b\\/@";
+static const char replace_chars[] = " ntb\\/@";
#define add_char(BASE, INDEX, LEN, C) do { if((INDEX) < (LEN)) (BASE)[(INDEX)++] = (C); }while(0);
@@ -348,16 +348,19 @@ krb5_build_principal(krb5_context context,
static krb5_error_code
append_component(krb5_context context, krb5_principal p,
- general_string comp,
+ const char *comp,
size_t comp_len)
{
general_string *tmp;
size_t len = princ_num_comp(p);
+
tmp = realloc(princ_comp(p), (len + 1) * sizeof(*tmp));
if(tmp == NULL)
return ENOMEM;
princ_comp(p) = tmp;
princ_ncomp(p, len) = malloc(comp_len + 1);
+ if (princ_ncomp(p, len) == NULL)
+ return ENOMEM;
memcpy (princ_ncomp(p, len), comp, comp_len);
princ_ncomp(p, len)[comp_len] = '\0';
princ_num_comp(p)++;
@@ -368,12 +371,12 @@ static void
va_ext_princ(krb5_context context, krb5_principal p, va_list ap)
{
while(1){
- char *s;
+ const char *s;
int len;
len = va_arg(ap, int);
if(len == 0)
break;
- s = va_arg(ap, char*);
+ s = va_arg(ap, const char*);
append_component(context, p, s, len);
}
}
@@ -382,8 +385,8 @@ static void
va_princ(krb5_context context, krb5_principal p, va_list ap)
{
while(1){
- char *s;
- s = va_arg(ap, char*);
+ const char *s;
+ s = va_arg(ap, const char*);
if(s == NULL)
break;
append_component(context, p, s, strlen(s));
@@ -835,10 +838,11 @@ krb5_524_conv_principal(krb5_context context,
if(type == KRB5_NT_SRV_HST){
char *p;
- strncpy(tmpinst, i, sizeof(tmpinst));
- tmpinst[sizeof(tmpinst) - 1] = 0;
+
+ strlcpy (tmpinst, i, sizeof(tmpinst));
p = strchr(tmpinst, '.');
- if(p) *p = 0;
+ if(p)
+ *p = 0;
i = tmpinst;
}
@@ -856,8 +860,7 @@ krb5_524_conv_principal(krb5_context context,
/*
* Create a principal in `ret_princ' for the service `sname' running
- * on host `hostname'.
- */
+ * on host `hostname'. */
krb5_error_code
krb5_sname_to_principal (krb5_context context,
@@ -879,15 +882,17 @@ krb5_sname_to_principal (krb5_context context,
if(sname == NULL)
sname = "host";
if(type == KRB5_NT_SRV_HST) {
- ret = krb5_expand_hostname (context, hostname, &host);
+ ret = krb5_expand_hostname_realms (context, hostname,
+ &host, &realms);
if (ret)
return ret;
strlwr(host);
hostname = host;
+ } else {
+ ret = krb5_get_host_realm(context, hostname, &realms);
+ if(ret)
+ return ret;
}
- ret = krb5_get_host_realm(context, hostname, &realms);
- if(ret)
- return ret;
ret = krb5_make_principal(context, ret_princ, realms[0], sname,
hostname, NULL);
diff --git a/crypto/heimdal/lib/krb5/rd_cred.c b/crypto/heimdal/lib/krb5/rd_cred.c
index c330791..71b79b1 100644
--- a/crypto/heimdal/lib/krb5/rd_cred.c
+++ b/crypto/heimdal/lib/krb5/rd_cred.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997 - 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include <krb5_locl.h>
-RCSID("$Id: rd_cred.c,v 1.8 1999/12/02 17:05:12 joda Exp $");
+RCSID("$Id: rd_cred.c,v 1.9 2000/02/06 05:19:52 assar Exp $");
krb5_error_code
krb5_rd_cred (krb5_context context,
@@ -122,7 +122,7 @@ krb5_rd_cred (krb5_context context,
/* check timestamp */
if (auth_context->flags & KRB5_AUTH_CONTEXT_DO_TIME) {
- int32_t sec;
+ krb5_timestamp sec;
krb5_timeofday (context, &sec);
diff --git a/crypto/heimdal/lib/krb5/rd_priv.c b/crypto/heimdal/lib/krb5/rd_priv.c
index 0bc8564..c4d7bea 100644
--- a/crypto/heimdal/lib/krb5/rd_priv.c
+++ b/crypto/heimdal/lib/krb5/rd_priv.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include <krb5_locl.h>
-RCSID("$Id: rd_priv.c,v 1.22 1999/12/02 17:05:12 joda Exp $");
+RCSID("$Id: rd_priv.c,v 1.23 2000/02/06 05:20:13 assar Exp $");
krb5_error_code
krb5_rd_priv(krb5_context context,
@@ -111,15 +111,15 @@ krb5_rd_priv(krb5_context context,
/* check timestamp */
if (auth_context->flags & KRB5_AUTH_CONTEXT_DO_TIME) {
- int32_t sec;
+ krb5_timestamp sec;
krb5_timeofday (context, &sec);
- if (part.timestamp == NULL ||
- part.usec == NULL ||
- abs(*part.timestamp - sec) > context->max_skew) {
- ret = KRB5KRB_AP_ERR_SKEW;
- goto failure_part;
- }
+ if (part.timestamp == NULL ||
+ part.usec == NULL ||
+ abs(*part.timestamp - sec) > context->max_skew) {
+ ret = KRB5KRB_AP_ERR_SKEW;
+ goto failure_part;
+ }
}
/* XXX - check replay cache */
diff --git a/crypto/heimdal/lib/krb5/rd_req.c b/crypto/heimdal/lib/krb5/rd_req.c
index 9f8df1d..236ecb4 100644
--- a/crypto/heimdal/lib/krb5/rd_req.c
+++ b/crypto/heimdal/lib/krb5/rd_req.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include <krb5_locl.h>
-RCSID("$Id: rd_req.c,v 1.38 1999/12/02 17:05:12 joda Exp $");
+RCSID("$Id: rd_req.c,v 1.40 2000/02/06 05:20:31 assar Exp $");
static krb5_error_code
decrypt_tkt_enc_part (krb5_context context,
@@ -128,7 +128,7 @@ krb5_decrypt_ticket(krb5_context context,
return ret;
{
- int32_t now;
+ krb5_timestamp now;
time_t start = t.authtime;
krb5_timeofday (context, &now);
@@ -202,13 +202,13 @@ krb5_verify_ap_req(krb5_context context,
krb5_auth_context ac;
krb5_error_code ret;
- if(auth_context){
+ if(auth_context) {
if(*auth_context == NULL){
krb5_auth_con_init(context, &ac);
*auth_context = ac;
}else
ac = *auth_context;
- }else
+ } else
krb5_auth_con_init(context, &ac);
if (ap_req->ap_options.use_session_key && ac->keyblock){
@@ -343,7 +343,7 @@ get_key_from_keytab(krb5_context context,
krb5_ap_req *ap_req,
krb5_const_principal server,
krb5_keytab keytab,
- krb5_keyblock **out)
+ krb5_keyblock **out_key)
{
krb5_keytab_entry entry;
krb5_error_code ret;
@@ -368,7 +368,7 @@ get_key_from_keytab(krb5_context context,
&entry);
if(ret)
goto out;
- ret = krb5_copy_keyblock(context, &entry.keyblock, out);
+ ret = krb5_copy_keyblock(context, &entry.keyblock, out_key);
krb5_kt_free_entry (context, &entry);
out:
if(keytab == NULL)
diff --git a/crypto/heimdal/lib/krb5/rd_safe.c b/crypto/heimdal/lib/krb5/rd_safe.c
index aebf215..fb7cc2d 100644
--- a/crypto/heimdal/lib/krb5/rd_safe.c
+++ b/crypto/heimdal/lib/krb5/rd_safe.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include <krb5_locl.h>
-RCSID("$Id: rd_safe.c,v 1.18 1999/12/02 17:05:12 joda Exp $");
+RCSID("$Id: rd_safe.c,v 1.19 2000/02/06 05:20:51 assar Exp $");
static krb5_error_code
verify_checksum(krb5_context context,
@@ -131,7 +131,7 @@ krb5_rd_safe(krb5_context context,
/* check timestamp */
if (auth_context->flags & KRB5_AUTH_CONTEXT_DO_TIME) {
- int32_t sec;
+ krb5_timestamp sec;
krb5_timeofday (context, &sec);
diff --git a/crypto/heimdal/lib/krb5/replay.c b/crypto/heimdal/lib/krb5/replay.c
index 5adc3db..3ca68e8 100644
--- a/crypto/heimdal/lib/krb5/replay.c
+++ b/crypto/heimdal/lib/krb5/replay.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -137,16 +137,17 @@ krb5_rc_close(krb5_context context,
static void
checksum_authenticator(Authenticator *auth, void *data)
{
- struct md5 md5;
+ MD5_CTX md5;
int i;
- md5_init(&md5);
- md5_update(&md5, auth->crealm, strlen(auth->crealm));
+
+ MD5Init (&md5);
+ MD5Update (&md5, auth->crealm, strlen(auth->crealm));
for(i = 0; i < auth->cname.name_string.len; i++)
- md5_update(&md5, auth->cname.name_string.val[i],
- strlen(auth->cname.name_string.val[i]));
- md5_update(&md5, &auth->ctime, sizeof(auth->ctime));
- md5_update(&md5, &auth->cusec, sizeof(auth->cusec));
- md5_finito(&md5, data);
+ MD5Update(&md5, auth->cname.name_string.val[i],
+ strlen(auth->cname.name_string.val[i]));
+ MD5Update (&md5, &auth->ctime, sizeof(auth->ctime));
+ MD5Update (&md5, &auth->cusec, sizeof(auth->cusec));
+ MD5Final (&md5, data);
}
krb5_error_code
diff --git a/crypto/heimdal/lib/krb5/time.c b/crypto/heimdal/lib/krb5/time.c
index 47a5f0b..e5a1185 100644
--- a/crypto/heimdal/lib/krb5/time.c
+++ b/crypto/heimdal/lib/krb5/time.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,16 +33,24 @@
#include "krb5_locl.h"
-RCSID("$Id: time.c,v 1.2 1999/12/02 17:05:13 joda Exp $");
+RCSID("$Id: time.c,v 1.3 2000/02/06 05:21:53 assar Exp $");
+
+/*
+ * return ``corrected'' time in `timeret'.
+ */
krb5_error_code
krb5_timeofday (krb5_context context,
- int32_t *timeret)
+ krb5_timestamp *timeret)
{
*timeret = time(NULL) + context->kdc_sec_offset;
return 0;
}
+/*
+ * like gettimeofday but with time correction to the KDC
+ */
+
krb5_error_code
krb5_us_timeofday (krb5_context context,
int32_t *sec,
diff --git a/crypto/heimdal/lib/krb5/transited.c b/crypto/heimdal/lib/krb5/transited.c
index ed5a5b5..2295551 100644
--- a/crypto/heimdal/lib/krb5/transited.c
+++ b/crypto/heimdal/lib/krb5/transited.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "krb5_locl.h"
-RCSID("$Id: transited.c,v 1.5 1999/12/02 17:05:13 joda Exp $");
+RCSID("$Id: transited.c,v 1.6 2000/02/07 03:19:43 assar Exp $");
/* this is an attempt at one of the most horrible `compression'
schemes that has ever been invented; it's so amazingly brain-dead
@@ -108,7 +108,7 @@ make_path(struct tr_realm *r, const char *from, const char *to)
r->next = path; /* XXX */
return ENOMEM;
}
- strncpy(path->realm, from, p - from);
+ memcpy(path->realm, from, p - from);
path->realm[p - from] = '\0';
p--;
}
@@ -256,7 +256,7 @@ decode_realms(const char *tr, int length, struct tr_realm **realms)
}
if(tr[i] == ','){
tmp = malloc(tr + i - start + 1);
- strncpy(tmp, start, tr + i - start);
+ memcpy(tmp, start, tr + i - start);
tmp[tr + i - start] = '\0';
r = make_realm(tmp);
if(r == NULL){
@@ -268,7 +268,7 @@ decode_realms(const char *tr, int length, struct tr_realm **realms)
}
}
tmp = malloc(tr + i - start + 1);
- strncpy(tmp, start, tr + i - start);
+ memcpy(tmp, start, tr + i - start);
tmp[tr + i - start] = '\0';
r = make_realm(tmp);
if(r == NULL){
diff --git a/crypto/heimdal/lib/krb5/verify_init.c b/crypto/heimdal/lib/krb5/verify_init.c
index 0f080ee..e7945ad 100644
--- a/crypto/heimdal/lib/krb5/verify_init.c
+++ b/crypto/heimdal/lib/krb5/verify_init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 1998 Kungliga Tekniska Högskolan
+ * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#include "krb5_locl.h"
-RCSID("$Id: verify_init.c,v 1.11 1999/12/02 17:05:13 joda Exp $");
+RCSID("$Id: verify_init.c,v 1.12 2000/01/21 05:47:35 assar Exp $");
void
krb5_verify_init_creds_opt_init(krb5_verify_init_creds_opt *options)
@@ -148,14 +148,14 @@ krb5_verify_init_creds(krb5_context context,
ret = 0;
goto cleanup;
}
- } else
- new_creds = creds;
+ creds = new_creds;
+ }
ret = krb5_mk_req_extended (context,
&auth_context,
0,
NULL,
- new_creds,
+ creds,
&req);
krb5_auth_con_free (context, auth_context);
@@ -179,7 +179,7 @@ cleanup:
krb5_auth_con_free (context, auth_context);
krb5_data_free (&req);
krb5_kt_free_entry (context, &entry);
- if (new_creds)
+ if (new_creds != NULL)
krb5_free_creds (context, new_creds);
if (ap_req_server == NULL && server)
krb5_free_principal (context, server);
diff --git a/crypto/heimdal/lib/roken/ChangeLog b/crypto/heimdal/lib/roken/ChangeLog
index c7d8168..4e7cd27 100644
--- a/crypto/heimdal/lib/roken/ChangeLog
+++ b/crypto/heimdal/lib/roken/ChangeLog
@@ -1,3 +1,31 @@
+2000-02-07 Assar Westerlund <assar@sics.se>
+
+ * Makefile.am: set version to 6:0:1
+
+2000-02-06 Assar Westerlund <assar@sics.se>
+
+ * xdbm.h: hopefully catch a few more declarations by including
+ <ndbm.h> even if <db.h> was found
+
+2000-01-26 Assar Westerlund <assar@sics.se>
+
+ * mini_inetd.c (mini_inetd): separate number of allocated sockets
+ and number of actual ones
+ * mini_inetd.c (mini_inetd): count sockets properly. and fail if
+ we cannot bind any
+ * mini_inetd.c (mini_inetd): make failing to create a socket
+ non-fatal
+
+2000-01-09 Assar Westerlund <assar@sics.se>
+
+ * Makefile.am(libroken_la_SOURCES): add strcollect.c
+ * Makefile.in: add strcollect.[co]
+ * simple_exec.c: use vstrcollect
+ * roken-common.h (_PATH_DEV): add
+ (strcollect, vstrcollect): add prototypes
+ * strcollect.c: new file. functions for collapsing an `va_list'
+ into an `char **'
+
2000-01-06 Assar Westerlund <assar@sics.se>
* Makefile.am: bump version to 5:0:0
diff --git a/crypto/heimdal/lib/roken/Makefile.am b/crypto/heimdal/lib/roken/Makefile.am
index 6499872..aea5099 100644
--- a/crypto/heimdal/lib/roken/Makefile.am
+++ b/crypto/heimdal/lib/roken/Makefile.am
@@ -1,11 +1,11 @@
-# $Id: Makefile.am,v 1.65 2000/01/06 22:24:36 assar Exp $
+# $Id: Makefile.am,v 1.67 2000/02/07 03:32:15 assar Exp $
include $(top_srcdir)/Makefile.am.common
CLEANFILES = roken.h make-roken.c print_version.h
lib_LTLIBRARIES = libroken.la
-libroken_la_LDFLAGS = -version-info 5:0:0
+libroken_la_LDFLAGS = -version-info 6:0:1
noinst_PROGRAMS = make-roken make-print-version
@@ -52,6 +52,7 @@ libroken_la_SOURCES = \
simple_exec.c \
snprintf.c \
socket.c \
+ strcollect.c \
tm2time.c \
verify.c \
warnerr.c \
diff --git a/crypto/heimdal/lib/roken/Makefile.in b/crypto/heimdal/lib/roken/Makefile.in
index 02d18cd..3743418 100644
--- a/crypto/heimdal/lib/roken/Makefile.in
+++ b/crypto/heimdal/lib/roken/Makefile.in
@@ -10,7 +10,7 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-# $Id: Makefile.am,v 1.65 2000/01/06 22:24:36 assar Exp $
+# $Id: Makefile.am,v 1.67 2000/02/07 03:32:15 assar Exp $
# $Id: Makefile.am.common,v 1.3 1999/04/01 14:58:43 joda Exp $
@@ -176,7 +176,7 @@ CHECK_LOCAL = $(PROGRAMS)
CLEANFILES = roken.h make-roken.c print_version.h
lib_LTLIBRARIES = libroken.la
-libroken_la_LDFLAGS = -version-info 5:0:0
+libroken_la_LDFLAGS = -version-info 6:0:1
noinst_PROGRAMS = make-roken make-print-version
@@ -189,7 +189,7 @@ strpftime_test_SOURCES = strpftime-test.c strftime.c strptime.c snprintf.c
@KRB4_TRUE@@KRB5_TRUE@make_print_version_LDADD = $(LIB_krb4) -ldes
-libroken_la_SOURCES = base64.c concat.c emalloc.c eread.c erealloc.c estrdup.c ewrite.c get_default_username.c get_window_size.c getarg.c getnameinfo_verified.c issuid.c k_getpwnam.c k_getpwuid.c mini_inetd.c net_read.c net_write.c parse_bytes.c parse_time.c parse_units.c print_version.c resolve.c roken_gethostby.c signal.c simple_exec.c snprintf.c socket.c tm2time.c verify.c warnerr.c xdbm.h
+libroken_la_SOURCES = base64.c concat.c emalloc.c eread.c erealloc.c estrdup.c ewrite.c get_default_username.c get_window_size.c getarg.c getnameinfo_verified.c issuid.c k_getpwnam.c k_getpwuid.c mini_inetd.c net_read.c net_write.c parse_bytes.c parse_time.c parse_units.c print_version.c resolve.c roken_gethostby.c signal.c simple_exec.c snprintf.c socket.c strcollect.c tm2time.c verify.c warnerr.c xdbm.h
EXTRA_libroken_la_SOURCES = chown.c copyhostent.c daemon.c err.c err.h errx.c fchown.c flock.c fnmatch.c fnmatch.h freeaddrinfo.c freehostent.c gai_strerror.c getaddrinfo.c getdtablesize.c getegid.c geteuid.c getgid.c gethostname.c getipnodebyaddr.c getipnodebyname.c getnameinfo.c getopt.c gettimeofday.c getuid.c getusershell.c glob.h hstrerror.c inet_aton.c inet_ntop.c inet_pton.c initgroups.c innetgr.c iruserok.c lstat.c memmove.c mkstemp.c putenv.c rcmd.c readv.c recvmsg.c sendmsg.c setegid.c setenv.c seteuid.c strcasecmp.c strdup.c strerror.c strftime.c strlcat.c strlcpy.c strlwr.c strncasecmp.c strndup.c strnlen.c strptime.c strsep.c strtok_r.c strupr.c swab.c unsetenv.c verr.c verrx.c vsyslog.c vwarn.c vwarnx.c warn.c warnx.c writev.c
@@ -231,7 +231,7 @@ get_window_size.lo getarg.lo getnameinfo_verified.lo issuid.lo \
k_getpwnam.lo k_getpwuid.lo mini_inetd.lo net_read.lo net_write.lo \
parse_bytes.lo parse_time.lo parse_units.lo print_version.lo resolve.lo \
roken_gethostby.lo signal.lo simple_exec.lo snprintf.lo socket.lo \
-tm2time.lo verify.lo warnerr.lo
+strcollect.lo tm2time.lo verify.lo warnerr.lo
check_PROGRAMS = parse_bytes-test$(EXEEXT) strpftime-test$(EXEEXT) \
getaddrinfo-test$(EXEEXT)
noinst_PROGRAMS = make-roken$(EXEEXT) make-print-version$(EXEEXT)
diff --git a/crypto/heimdal/lib/roken/mini_inetd.c b/crypto/heimdal/lib/roken/mini_inetd.c
index e92dac3..9b8a650 100644
--- a/crypto/heimdal/lib/roken/mini_inetd.c
+++ b/crypto/heimdal/lib/roken/mini_inetd.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1995 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
-RCSID("$Id: mini_inetd.c,v 1.21 1999/12/12 00:03:56 assar Exp $");
+RCSID("$Id: mini_inetd.c,v 1.25 2000/01/26 00:54:48 assar Exp $");
#endif
#include <stdio.h>
@@ -92,7 +92,7 @@ mini_inetd (int port)
int error, ret;
struct addrinfo *ai, *a, hints;
char portstr[NI_MAXSERV];
- int n, i;
+ int n, nalloc, i;
int *fds;
fd_set orig_read_set, read_set;
int max_fd = -1;
@@ -107,19 +107,21 @@ mini_inetd (int port)
if (error)
errx (1, "getaddrinfo: %s", gai_strerror (error));
- for (n = 0, a = ai; a != NULL; a = a->ai_next)
- ++n;
+ for (nalloc = 0, a = ai; a != NULL; a = a->ai_next)
+ ++nalloc;
- fds = malloc (n * sizeof(*fds));
+ fds = malloc (nalloc * sizeof(*fds));
if (fds == NULL)
errx (1, "mini_inetd: out of memory");
FD_ZERO(&orig_read_set);
- for (i = 0, a = ai; a != NULL; a = a->ai_next, ++i) {
+ for (i = 0, a = ai; a != NULL; a = a->ai_next) {
fds[i] = socket (a->ai_family, a->ai_socktype, a->ai_protocol);
- if (fds[i] < 0)
- err (1, "socket");
+ if (fds[i] < 0) {
+ warn ("socket");
+ continue;
+ }
socket_set_reuseaddr (fds[i], 1);
if (bind (fds[i], a->ai_addr, a->ai_addrlen) < 0)
err (1, "bind");
@@ -127,8 +129,12 @@ mini_inetd (int port)
err (1, "listen");
FD_SET(fds[i], &orig_read_set);
max_fd = max(max_fd, fds[i]);
+ ++i;
}
freeaddrinfo (ai);
+ if (i == 0)
+ errx (1, "no sockets");
+ n = i;
do {
read_set = orig_read_set;
diff --git a/crypto/heimdal/lib/roken/print_version.c b/crypto/heimdal/lib/roken/print_version.c
index 809bbb3..3b35ee1 100644
--- a/crypto/heimdal/lib/roken/print_version.c
+++ b/crypto/heimdal/lib/roken/print_version.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1998 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
-RCSID("$Id: print_version.c,v 1.5 1999/12/02 16:58:51 joda Exp $");
+RCSID("$Id: print_version.c,v 1.6 2000/02/06 06:52:32 assar Exp $");
#endif
#include "roken.h"
@@ -72,7 +72,7 @@ print_version(const char *progname)
}
}
fprintf(stderr, "%s (%s)\n", progname, msg);
- fprintf(stderr, "Copyright (c) 1999 Kungliga Tekniska Högskolan\n");
+ fprintf(stderr, "Copyright (c) 1999 - 2000 Kungliga Tekniska Högskolan\n");
if(num_args != 0)
free(msg);
}
diff --git a/crypto/heimdal/lib/roken/roken-common.h b/crypto/heimdal/lib/roken/roken-common.h
index 164547a..b972024 100644
--- a/crypto/heimdal/lib/roken/roken-common.h
+++ b/crypto/heimdal/lib/roken/roken-common.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1995 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*/
-/* $Id: roken-common.h,v 1.24 1999/12/05 13:25:40 assar Exp $ */
+/* $Id: roken-common.h,v 1.25 2000/01/09 10:58:34 assar Exp $ */
#ifndef __ROKEN_COMMON_H__
#define __ROKEN_COMMON_H__
@@ -104,6 +104,10 @@
#define O_ACCMODE 003
#endif
+#ifndef _PATH_DEV
+#define _PATH_DEV "/dev/"
+#endif
+
#ifndef _PATH_DEVNULL
#define _PATH_DEVNULL "/dev/null"
#endif
@@ -280,4 +284,10 @@ socket_set_tos (int sock, int tos);
void
socket_set_reuseaddr (int sock, int val);
+char **
+vstrcollect(va_list *ap);
+
+char **
+strcollect(char *first, ...);
+
#endif /* __ROKEN_COMMON_H__ */
diff --git a/crypto/heimdal/lib/roken/simple_exec.c b/crypto/heimdal/lib/roken/simple_exec.c
index 426f494..4aa22fa 100644
--- a/crypto/heimdal/lib/roken/simple_exec.c
+++ b/crypto/heimdal/lib/roken/simple_exec.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1998 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -33,7 +33,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
-RCSID("$Id: simple_exec.c,v 1.6 1999/12/02 16:58:52 joda Exp $");
+RCSID("$Id: simple_exec.c,v 1.7 2000/01/09 10:58:51 assar Exp $");
#endif
#include <stdarg.h>
@@ -113,27 +113,6 @@ simple_execve(const char *file, char *const args[], char *const envp[])
}
}
-static char **
-collect_args(va_list *ap)
-{
- char **argv = NULL;
- int argc = 0, i = 0;
- do {
- if(i == argc) {
- /* realloc argv */
- char **tmp = realloc(argv, (argc + 5) * sizeof(*argv));
- if(tmp == NULL) {
- errno = ENOMEM;
- return NULL;
- }
- argv = tmp;
- argc += 5;
- }
- argv[i++] = va_arg(*ap, char*);
- } while(argv[i - 1] != NULL);
- return argv;
-}
-
int
simple_execlp(const char *file, ...)
{
@@ -142,7 +121,7 @@ simple_execlp(const char *file, ...)
int ret;
va_start(ap, file);
- argv = collect_args(&ap);
+ argv = vstrcollect(&ap);
va_end(ap);
if(argv == NULL)
return -1;
@@ -160,7 +139,7 @@ simple_execle(const char *file, ... /* ,char *const envp[] */)
int ret;
va_start(ap, file);
- argv = collect_args(&ap);
+ argv = vstrcollect(&ap);
envp = va_arg(ap, char **);
va_end(ap);
if(argv == NULL)
diff --git a/crypto/heimdal/lib/roken/strcollect.c b/crypto/heimdal/lib/roken/strcollect.c
new file mode 100644
index 0000000..1e82ad0
--- /dev/null
+++ b/crypto/heimdal/lib/roken/strcollect.c
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan
+ * (Royal Institute of Technology, Stockholm, Sweden).
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+RCSID("$Id: strcollect.c,v 1.1 2000/01/09 10:57:43 assar Exp $");
+#endif
+
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <roken.h>
+
+enum { initial = 10, increment = 5 };
+
+static char **
+sub (char **argv, int i, int argc, va_list *ap)
+{
+ do {
+ if(i == argc) {
+ /* realloc argv */
+ char **tmp = realloc(argv, (argc + increment) * sizeof(*argv));
+ if(tmp == NULL) {
+ free(argv);
+ errno = ENOMEM;
+ return NULL;
+ }
+ argv = tmp;
+ argc += increment;
+ }
+ argv[i++] = va_arg(*ap, char*);
+ } while(argv[i - 1] != NULL);
+ return argv;
+}
+
+/*
+ * return a malloced vector of pointers to the strings in `ap'
+ * terminated by NULL.
+ */
+
+char **
+vstrcollect(va_list *ap)
+{
+ return sub (NULL, 0, 0, ap);
+}
+
+/*
+ *
+ */
+
+char **
+strcollect(char *first, ...)
+{
+ va_list ap;
+ char **ret = malloc (initial * sizeof(char *));
+
+ if (ret == NULL)
+ return ret;
+
+ ret[0] = first;
+ va_start(ap, first);
+ ret = sub (ret, 1, initial, &ap);
+ va_end(ap);
+ return ret;
+}
diff --git a/crypto/heimdal/lib/roken/xdbm.h b/crypto/heimdal/lib/roken/xdbm.h
index 83885b3..78d7330 100644
--- a/crypto/heimdal/lib/roken/xdbm.h
+++ b/crypto/heimdal/lib/roken/xdbm.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1995 - 1999 Kungliga Tekniska Högskolan
+ * Copyright (c) 1995 - 2000 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -31,22 +31,24 @@
* SUCH DAMAGE.
*/
-/* $Id: xdbm.h,v 1.6 1999/12/02 16:58:54 joda Exp $ */
+/* $Id: xdbm.h,v 1.8 2000/02/06 05:03:27 assar Exp $ */
/* Generic *dbm include file */
#ifndef __XDBM_H__
#define __XDBM_H__
-#ifdef HAVE_NDBM_H
+#if defined(HAVE_DB_H)
+#define DB_DBM_HSEARCH 1
+#include <db.h>
+#endif
+
+#if defined(HAVE_NDBM_H)
#include <ndbm.h>
#elif defined(HAVE_DBM_H)
#include <dbm.h>
#elif defined(HAVE_RPCSVC_DBM_H)
#include <rpcsvc/dbm.h>
-#elif defined(HAVE_DB_H)
-#define DB_DBM_HSEARCH 1
-#include <db.h>
#endif
/* Macros to convert ndbm names to dbm names.
OpenPOWER on IntegriCloud