Load etypes.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@4727 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1998-04-05 05:47:54 +00:00
parent 1631faa3fb
commit 6fc8be2015

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -52,6 +52,7 @@ struct entry{
char *valid_end;
char *pw_end;
char *flags;
char *etypes;
};
static char *
@@ -182,6 +183,23 @@ parse_hdbflags2int(char *str)
return int2HDBFlags(i);
}
static void
parse_etypes(char *str, unsigned **val, unsigned *len)
{
unsigned v;
*val = NULL;
*len = 0;
while(sscanf(str, "%u", &v) == 1) {
*val = realloc(*val, (*len+1) * sizeof(**val));
(*val)[(*len)++] = v;
str = strchr(str, ':');
if(str == NULL)
break;
str++;
}
}
static void
doit(char *filename, int merge)
{
@@ -249,6 +267,9 @@ doit(char *filename, int merge)
e.flags = p;
p = skip_next(p);
e.etypes = p;
p = skip_next(p);
memset(&ent, 0, sizeof(ent));
ret = krb5_parse_name(context, e.principal, &ent.principal);
if(ret){
@@ -269,8 +290,14 @@ doit(char *filename, int merge)
ent.pw_end = parse_time_string(NULL, e.pw_end);
ent.max_life = parse_integer(NULL, e.max_life);
ent.max_renew = parse_integer(NULL, e.max_renew);
ent.flags = parse_hdbflags2int(e.flags);
ALLOC(ent.etypes);
parse_etypes(e.etypes, &ent.etypes->val, &ent.etypes->len);
if(ent.etypes->len == 0) {
free(ent.etypes);
ent.etypes = NULL;
}
db->store(context, db, 1, &ent);
hdb_free_entry (context, &ent);
}