free data

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2566 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1997-07-23 23:52:51 +00:00
parent 753a9458fa
commit 06a5eb07ff
2 changed files with 19 additions and 10 deletions

View File

@@ -64,6 +64,7 @@ DB_op(krb5_context context, HDB *db, hdb_entry *entry, int op)
key.size = data.length; key.size = data.length;
switch(op){ switch(op){
case 0: case 0:
krb5_free_principal (context, entry->principal);
err = d->get(d, &key, &value, 0); err = d->get(d, &key, &value, 0);
break; break;
case 1: case 1:
@@ -74,6 +75,7 @@ DB_op(krb5_context context, HDB *db, hdb_entry *entry, int op)
krb5_data_free(&data); krb5_data_free(&data);
break; break;
case 2: case 2:
krb5_free_principal (context, entry->principal);
err = d->del(d, &key, 0); err = d->del(d, &key, 0);
break; break;
} }
@@ -116,8 +118,9 @@ DB_seq(krb5_context context, HDB *db, hdb_entry *entry, int flag)
{ {
DB *d = (DB*)db->db; DB *d = (DB*)db->db;
DBT key, value; DBT key, value;
krb5_data data; krb5_data key_data, data;
int err; int err;
krb5_principal principal;
err = d->seq(d, &key, &value, flag); err = d->seq(d, &key, &value, flag);
if(err == -1) if(err == -1)
@@ -125,13 +128,15 @@ DB_seq(krb5_context context, HDB *db, hdb_entry *entry, int flag)
if(err == 1) if(err == 1)
return KRB5_HDB_NOENTRY; return KRB5_HDB_NOENTRY;
data.data = key.data; key_data.data = key.data;
data.length = key.size; key_data.length = key.size;
entry->principal = malloc(sizeof(*entry->principal));
hdb_key2principal(context, &data, &entry->principal);
data.data = value.data; data.data = value.data;
data.length = value.size; data.length = value.size;
hdb_value2entry(context, &data, entry); hdb_value2entry(context, &data, entry);
if (entry->principal == NULL) {
entry->principal = malloc(sizeof(*entry->principal));
hdb_key2principal(context, &key_data, &entry->principal);
}
return 0; return 0;
} }

View File

@@ -59,6 +59,7 @@ NDBM_fetch(krb5_context context, HDB *db, hdb_entry *entry)
krb5_data data; krb5_data data;
hdb_principal2key(context, entry->principal, &data); hdb_principal2key(context, entry->principal, &data);
krb5_free_principal (context, entry->principal);
key.dptr = data.data; key.dptr = data.data;
key.dsize = data.length; key.dsize = data.length;
@@ -121,7 +122,8 @@ NDBM_seq(krb5_context context, HDB *db, hdb_entry *entry, int first)
{ {
DBM *d = (DBM*)db->db; DBM *d = (DBM*)db->db;
datum key, value; datum key, value;
krb5_data data; krb5_data key_data, data;
krb5_principal principal;
if(first) if(first)
key = dbm_firstkey(d); key = dbm_firstkey(d);
@@ -129,15 +131,17 @@ NDBM_seq(krb5_context context, HDB *db, hdb_entry *entry, int first)
key = dbm_nextkey(d); key = dbm_nextkey(d);
if(key.dptr == NULL) if(key.dptr == NULL)
return KRB5_HDB_NOENTRY; return KRB5_HDB_NOENTRY;
data.data = key.dptr; key_data.data = key.dptr;
data.length = key.dsize; key_data.length = key.dsize;
entry->principal = malloc(sizeof(*entry->principal));
hdb_key2principal(context, &data, entry->principal);
value = dbm_fetch(d, key); value = dbm_fetch(d, key);
/* krb5_data_free(&data); */ /* krb5_data_free(&data); */
data.data = value.dptr; data.data = value.dptr;
data.length = value.dsize; data.length = value.dsize;
hdb_value2entry(context, &data, entry); hdb_value2entry(context, &data, entry);
if (entry->principal == NULL) {
entry->principal = malloc (sizeof(*entry->principal));
hdb_key2principal (context, &key_data, entry->principal);
}
/* krb5_data_free(&data); */ /* krb5_data_free(&data); */
return 0; return 0;
} }