Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-1-5]: src Apply patch (requested by assar):
details: https://anonhg.NetBSD.org/src/rev/73ed1d4f5290
branches: netbsd-1-5
changeset: 491168:73ed1d4f5290
user: he <he%NetBSD.org@localhost>
date: Thu Apr 05 23:25:55 2001 +0000
description:
Apply patch (requested by assar):
Upgrade Heimdal to version 0.3e.
diffstat:
crypto/dist/heimdal/lib/krb5/mcache.c | 138 +-
etc/mtree/NetBSD.dist | 7 +-
include/heimdal/config.h | 1445 +++++++++++++++++---------------
include/heimdal/roken.h | 22 +-
include/heimdal/version.h | 10 +-
lib/Makefile | 4 +-
6 files changed, 865 insertions(+), 761 deletions(-)
diffs (truncated from 2295 to 300 lines):
diff -r 6b2f4f674c00 -r 73ed1d4f5290 crypto/dist/heimdal/lib/krb5/mcache.c
--- a/crypto/dist/heimdal/lib/krb5/mcache.c Thu Apr 05 23:25:54 2001 +0000
+++ b/crypto/dist/heimdal/lib/krb5/mcache.c Thu Apr 05 23:25:55 2001 +0000
@@ -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,25 +33,24 @@
#include "krb5_locl.h"
-RCSID("$Id: mcache.c,v 1.1.1.1.2.1 2000/08/11 20:36:15 thorpej Exp $");
+RCSID("$Id: mcache.c,v 1.1.1.1.2.2 2001/04/05 23:25:55 he Exp $");
typedef struct krb5_mcache {
- struct krb5_mcache *next;
- char *filename;
+ char *name;
unsigned int refcnt;
- int dead;
krb5_principal primary_principal;
struct link {
krb5_creds cred;
struct link *next;
} *creds;
+ struct krb5_mcache *next;
} krb5_mcache;
static struct krb5_mcache *mcc_head;
#define MCACHE(X) ((krb5_mcache *)(X)->data.data)
-#define FILENAME(X) (MCACHE(X)->filename)
+#define MISDEAD(X) ((X)->primary_principal == NULL)
#define MCC_CURSOR(C) ((struct link*)(C))
@@ -59,7 +58,30 @@
mcc_get_name(krb5_context context,
krb5_ccache id)
{
- return FILENAME(id);
+ return MCACHE(id)->name;
+}
+
+static krb5_mcache *
+mcc_alloc(const char *name)
+{
+ krb5_mcache *m;
+ ALLOC(m, 1);
+ if(m == NULL)
+ return NULL;
+ if(name == NULL)
+ asprintf(&m->name, "%p", m);
+ else
+ m->name = strdup(name);
+ if(m->name == NULL) {
+ free(m);
+ return NULL;
+ }
+ m->refcnt = 1;
+ m->primary_principal = NULL;
+ m->creds = NULL;
+ m->next = mcc_head;
+ mcc_head = m;
+ return m;
}
static krb5_error_code
@@ -68,7 +90,7 @@
krb5_mcache *m;
for (m = mcc_head; m != NULL; m = m->next)
- if (m->dead == 0 && strcmp(m->filename, res) == 0)
+ if (strcmp(m->name, res) == 0)
break;
if (m != NULL) {
@@ -78,56 +100,30 @@
return 0;
}
- m = malloc(sizeof(*m));
+ m = mcc_alloc(res);
if (m == NULL)
return KRB5_CC_NOMEM;
- m->filename = strdup(res);
- if (m->filename == NULL) {
- free(m);
- return KRB5_CC_NOMEM;
- }
-
- m->refcnt = 1;
- m->dead = 0;
- m->primary_principal = NULL;
- m->creds = NULL;
(*id)->data.data = m;
(*id)->data.length = sizeof(*m);
- m->next = mcc_head;
- mcc_head = m;
-
return 0;
}
+
static krb5_error_code
mcc_gen_new(krb5_context context, krb5_ccache *id)
{
krb5_mcache *m;
- char *file;
- m = malloc (sizeof(*m));
+ m = mcc_alloc(NULL);
+
if (m == NULL)
return KRB5_CC_NOMEM;
- asprintf(&file, "%lX", (unsigned long)m);
- if (file == NULL) {
- free(m);
- return KRB5_CC_NOMEM;
- }
-
- m->filename = file;
- m->refcnt = 1;
- m->dead = 0;
- m->primary_principal = NULL;
- m->creds = NULL;
(*id)->data.data = m;
(*id)->data.length = sizeof(*m);
- m->next = mcc_head;
- mcc_head = m;
-
return 0;
}
@@ -136,15 +132,9 @@
krb5_ccache id,
krb5_principal primary_principal)
{
- krb5_mcache *m = MCACHE(id);
- krb5_error_code ret;
-
- ret = krb5_copy_principal (context,
+ return krb5_copy_principal (context,
primary_principal,
- &m->primary_principal);
- if (ret)
- return ret;
- return 0;
+ &MCACHE(id)->primary_principal);
}
static krb5_error_code
@@ -156,8 +146,8 @@
if (--m->refcnt != 0)
return 0;
- if (m->dead) {
- free(FILENAME(id));
+ if (MISDEAD(m)) {
+ free (m->name);
krb5_data_free(&id->data);
}
@@ -168,29 +158,24 @@
mcc_destroy(krb5_context context,
krb5_ccache id)
{
- krb5_mcache *n, *m = MCACHE(id);
+ krb5_mcache **n, *m = MCACHE(id);
struct link *l;
if (m->refcnt == 0)
krb5_abortx(context, "mcc_destroy: refcnt already 0");
- if (m->dead == 0) {
- if (m == mcc_head)
- mcc_head = m->next;
- else {
- for (n = mcc_head; n != NULL; n = n->next) {
- if (n->next == m) {
- n->next = m->next;
+ if (!MISDEAD(m)) {
+ /* if this is an active mcache, remove it from the linked
+ list, and free all data */
+ for(n = &mcc_head; n && *n; n = &(*n)->next) {
+ if(m == *n) {
+ *n = m->next;
break;
}
}
- }
- }
-
- if (m->primary_principal != NULL) {
krb5_free_principal (context, m->primary_principal);
m->primary_principal = NULL;
- }
+
l = m->creds;
while (l != NULL) {
struct link *old;
@@ -201,14 +186,7 @@
free (old);
}
m->creds = NULL;
- m->dead = 1;
-
- if (--m->refcnt != 0)
- return 0;
-
- free (FILENAME(id));
- krb5_data_free(&id->data);
-
+ }
return 0;
}
@@ -221,7 +199,7 @@
krb5_error_code ret;
struct link *l;
- if (m->dead)
+ if (MISDEAD(m))
return ENOENT;
l = malloc (sizeof(*l));
@@ -246,7 +224,7 @@
{
krb5_mcache *m = MCACHE(id);
- if (m->dead)
+ if (MISDEAD(m))
return ENOENT;
return krb5_copy_principal (context,
@@ -261,7 +239,7 @@
{
krb5_mcache *m = MCACHE(id);
- if (m->dead)
+ if (MISDEAD(m))
return ENOENT;
*cursor = m->creds;
@@ -277,7 +255,7 @@
krb5_mcache *m = MCACHE(id);
struct link *l;
- if (m->dead)
+ if (MISDEAD(m))
return ENOENT;
l = *cursor;
@@ -302,9 +280,19 @@
mcc_remove_cred(krb5_context context,
krb5_ccache id,
krb5_flags which,
- krb5_creds *cred)
+ krb5_creds *mcreds)
{
- return 0; /* XXX */
+ krb5_mcache *m = MCACHE(id);
+ struct link **q, *p;
+ for(q = &m->creds, p = *q; p; p = *q) {
+ if(krb5_compare_creds(context, which, mcreds, &p->cred)) {
+ *q = p->next;
+ krb5_free_cred_contents(context, &p->cred);
+ free(p);
+ } else
+ q = &p->next;
+ }
+ return 0;
}
static krb5_error_code
diff -r 6b2f4f674c00 -r 73ed1d4f5290 etc/mtree/NetBSD.dist
--- a/etc/mtree/NetBSD.dist Thu Apr 05 23:25:54 2001 +0000
+++ b/etc/mtree/NetBSD.dist Thu Apr 05 23:25:55 2001 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: NetBSD.dist,v 1.110.2.8 2001/02/27 16:17:51 he Exp $
+# $NetBSD: NetBSD.dist,v 1.110.2.9 2001/04/05 23:25:57 he Exp $
# @(#)4.4BSD.dist 8.1 (Berkeley) 6/13/93
/set type=dir uname=root gname=wheel mode=0755
@@ -914,6 +914,11 @@
# ./usr/share/examples/ipf
..
+# ./usr/share/examples/kerberos
+kerberos
+# ./usr/share/examples/kerberos
+..
Home |
Main Index |
Thread Index |
Old Index