From 98dd9c4f85b4e9452b3bbc22c506d7358767ae90 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Sun, 13 Jul 1997 03:11:58 +0000 Subject: [PATCH] Free some memory. Close DB. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2244 ec53bebd-3082-4978-b11e-865c3cabbd6b --- admin/ank.c | 8 ++++++-- admin/dump.c | 4 +++- kadmin/dump.c | 4 +++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/admin/ank.c b/admin/ank.c index 6bed998f7..b0ab54cc2 100644 --- a/admin/ank.c +++ b/admin/ank.c @@ -25,7 +25,7 @@ doit(char *principal, int mod) case KRB5_HDB_NOENTRY: if(mod){ fprintf(stderr, "Entry not found in database\n"); - return; + goto out; }else{ krb5_realm *realm; @@ -46,10 +46,12 @@ doit(char *principal, int mod) if(db->fetch(context, db, &def)){ /* XXX */ } + ent.flags.i = 0; ent.kvno = 0; ent.max_life = def.max_life; ent.max_renew = def.max_renew; ent.expires = def.expires; + hdb_free_entry(context, &def); if(ent.expires) ent.expires += time(NULL); break; @@ -57,7 +59,7 @@ doit(char *principal, int mod) case 0: if(!mod){ warnx("Principal exists"); - return; + goto out; } break; default: @@ -93,6 +95,7 @@ doit(char *principal, int mod) krb5_get_salt(ent.principal, &salt); memset(&ent.keyblock, 0, sizeof(ent.keyblock)); krb5_string_to_key(buf, &salt, &ent.keyblock); + krb5_data_free(&salt); } ent.kvno++; } @@ -120,6 +123,7 @@ doit(char *principal, int mod) exit(1); } hdb_free_entry(context, &ent); +out: db->close(context, db); } diff --git a/admin/dump.c b/admin/dump.c index 5bd4b52b5..58c41a84e 100644 --- a/admin/dump.c +++ b/admin/dump.c @@ -65,10 +65,12 @@ dump(int argc, char **argv) fprintf(f, " %s %s %d\n", p, time2str(ent.expires), - ent.u.flags); + ent.flags.i); free(p); + hdb_free_entry(context, &ent); err = db->nextkey(context, db, &ent); } if(f != stdout) fclose(f); + db->close(context, db); } diff --git a/kadmin/dump.c b/kadmin/dump.c index 5bd4b52b5..58c41a84e 100644 --- a/kadmin/dump.c +++ b/kadmin/dump.c @@ -65,10 +65,12 @@ dump(int argc, char **argv) fprintf(f, " %s %s %d\n", p, time2str(ent.expires), - ent.u.flags); + ent.flags.i); free(p); + hdb_free_entry(context, &ent); err = db->nextkey(context, db, &ent); } if(f != stdout) fclose(f); + db->close(context, db); }