Load etypes.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@4727 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -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).
|
* (Royal Institute of Technology, Stockholm, Sweden).
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
@@ -52,6 +52,7 @@ struct entry{
|
|||||||
char *valid_end;
|
char *valid_end;
|
||||||
char *pw_end;
|
char *pw_end;
|
||||||
char *flags;
|
char *flags;
|
||||||
|
char *etypes;
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
@@ -182,6 +183,23 @@ parse_hdbflags2int(char *str)
|
|||||||
return int2HDBFlags(i);
|
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
|
static void
|
||||||
doit(char *filename, int merge)
|
doit(char *filename, int merge)
|
||||||
{
|
{
|
||||||
@@ -249,6 +267,9 @@ doit(char *filename, int merge)
|
|||||||
e.flags = p;
|
e.flags = p;
|
||||||
p = skip_next(p);
|
p = skip_next(p);
|
||||||
|
|
||||||
|
e.etypes = p;
|
||||||
|
p = skip_next(p);
|
||||||
|
|
||||||
memset(&ent, 0, sizeof(ent));
|
memset(&ent, 0, sizeof(ent));
|
||||||
ret = krb5_parse_name(context, e.principal, &ent.principal);
|
ret = krb5_parse_name(context, e.principal, &ent.principal);
|
||||||
if(ret){
|
if(ret){
|
||||||
@@ -269,8 +290,14 @@ doit(char *filename, int merge)
|
|||||||
ent.pw_end = parse_time_string(NULL, e.pw_end);
|
ent.pw_end = parse_time_string(NULL, e.pw_end);
|
||||||
ent.max_life = parse_integer(NULL, e.max_life);
|
ent.max_life = parse_integer(NULL, e.max_life);
|
||||||
ent.max_renew = parse_integer(NULL, e.max_renew);
|
ent.max_renew = parse_integer(NULL, e.max_renew);
|
||||||
|
|
||||||
ent.flags = parse_hdbflags2int(e.flags);
|
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);
|
db->store(context, db, 1, &ent);
|
||||||
hdb_free_entry (context, &ent);
|
hdb_free_entry (context, &ent);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user