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