Index: gbde.c =================================================================== RCS file: /private/FreeBSD/src/sbin/gbde/gbde.c,v retrieving revision 1.18 diff -u -p -r1.18 gbde.c --- gbde.c 13 Oct 2003 20:14:02 -0000 1.18 +++ gbde.c 4 Feb 2004 20:59:05 -0000 @@ -180,6 +180,7 @@ random_bits(void *p, u_int len) } i = read(fdr, p, len); + close(fdr); if (i != (int)len) err(1, "read from /dev/urandom"); } @@ -362,6 +363,7 @@ cmd_nuke(struct g_bde_key *gl, int dfd , if (offset2 != offset) err(1, "lseek"); i = write(dfd, sbuf, gl->sectorsize); + free(sbuf); if (i != (int)gl->sectorsize) err(1, "write"); printf("Nuked key %d\n", key); @@ -444,6 +446,7 @@ cmd_write(struct g_bde_key *gl, struct g if (i != (int)gl->sectorsize) err(1, "write"); printf("Wrote key %d at %jd\n", key, (intmax_t)offset); + free(sbuf); #if 0 printf("s0 = %jd\n", (intmax_t)gl->sector0); printf("sN = %jd\n", (intmax_t)gl->sectorN); @@ -518,8 +521,10 @@ cmd_init(struct g_bde_key *gl, int dfd, if (p == NULL) p = "vi"; if (snprintf(cbuf, sizeof(cbuf), "%s %s\n", p, q) >= - (ssize_t)sizeof(cbuf)) + (ssize_t)sizeof(cbuf)) { + unlink(q); errx(1, "EDITOR is too long"); + } system(cbuf); } i = open(q, O_RDONLY); @@ -528,6 +533,7 @@ cmd_init(struct g_bde_key *gl, int dfd, params = properties_read(i); close (i); unlink(q); + free(q); } /* */