free data
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2566 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		
							
								
								
									
										15
									
								
								lib/hdb/db.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								lib/hdb/db.c
									
									
									
									
									
								
							| @@ -64,6 +64,7 @@ DB_op(krb5_context context, HDB *db, hdb_entry *entry, int op) | ||||
|     key.size = data.length; | ||||
|     switch(op){ | ||||
|     case 0: | ||||
| 	krb5_free_principal (context, entry->principal); | ||||
| 	err = d->get(d, &key, &value, 0); | ||||
| 	break; | ||||
|     case 1: | ||||
| @@ -74,6 +75,7 @@ DB_op(krb5_context context, HDB *db, hdb_entry *entry, int op) | ||||
| 	krb5_data_free(&data); | ||||
| 	break; | ||||
|     case 2: | ||||
| 	krb5_free_principal (context, entry->principal); | ||||
| 	err = d->del(d, &key, 0); | ||||
| 	break; | ||||
|     } | ||||
| @@ -116,8 +118,9 @@ DB_seq(krb5_context context, HDB *db, hdb_entry *entry, int flag) | ||||
| { | ||||
|     DB *d = (DB*)db->db; | ||||
|     DBT key, value; | ||||
|     krb5_data data; | ||||
|     krb5_data key_data, data; | ||||
|     int err; | ||||
|     krb5_principal principal; | ||||
|  | ||||
|     err = d->seq(d, &key, &value, flag); | ||||
|     if(err == -1) | ||||
| @@ -125,13 +128,15 @@ DB_seq(krb5_context context, HDB *db, hdb_entry *entry, int flag) | ||||
|     if(err == 1) | ||||
| 	return KRB5_HDB_NOENTRY; | ||||
|  | ||||
|     data.data = key.data; | ||||
|     data.length = key.size; | ||||
|     entry->principal = malloc(sizeof(*entry->principal)); | ||||
|     hdb_key2principal(context, &data, &entry->principal); | ||||
|     key_data.data = key.data; | ||||
|     key_data.length = key.size; | ||||
|     data.data = value.data; | ||||
|     data.length = value.size; | ||||
|     hdb_value2entry(context, &data, entry); | ||||
|     if (entry->principal == NULL) { | ||||
| 	entry->principal = malloc(sizeof(*entry->principal)); | ||||
| 	hdb_key2principal(context, &key_data, &entry->principal); | ||||
|     } | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -59,6 +59,7 @@ NDBM_fetch(krb5_context context, HDB *db, hdb_entry *entry) | ||||
|     krb5_data data; | ||||
|  | ||||
|     hdb_principal2key(context, entry->principal, &data); | ||||
|     krb5_free_principal (context, entry->principal); | ||||
|  | ||||
|     key.dptr = data.data; | ||||
|     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; | ||||
|     datum key, value; | ||||
|     krb5_data data; | ||||
|     krb5_data key_data, data; | ||||
|     krb5_principal principal; | ||||
|  | ||||
|     if(first) | ||||
| 	key = dbm_firstkey(d); | ||||
| @@ -129,15 +131,17 @@ NDBM_seq(krb5_context context, HDB *db, hdb_entry *entry, int first) | ||||
| 	key = dbm_nextkey(d); | ||||
|     if(key.dptr == NULL) | ||||
| 	return KRB5_HDB_NOENTRY; | ||||
|     data.data = key.dptr; | ||||
|     data.length = key.dsize; | ||||
|     entry->principal = malloc(sizeof(*entry->principal)); | ||||
|     hdb_key2principal(context, &data, entry->principal); | ||||
|     key_data.data = key.dptr; | ||||
|     key_data.length = key.dsize; | ||||
|     value = dbm_fetch(d, key); | ||||
|     /* krb5_data_free(&data); */ | ||||
|     data.data = value.dptr; | ||||
|     data.length = value.dsize; | ||||
|     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); */ | ||||
|     return 0; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Assar Westerlund
					Assar Westerlund