Index: head/usr.sbin/fdread/fdread.c =================================================================== --- head/usr.sbin/fdread/fdread.c +++ head/usr.sbin/fdread/fdread.c @@ -184,6 +184,7 @@ if (rv == 0) { /* EOF? */ warnx("premature EOF after %u bytes", nbytes); + free(trackbuf); return (EX_OK); } if ((unsigned)rv == tracksize) { @@ -215,6 +216,7 @@ if (!quiet) putc('\n', stderr); perror("non-IO error"); + free(trackbuf); return (EX_OSERR); } if (ioctl(fd, FD_GSTAT, &fdcs) == -1) @@ -233,6 +235,7 @@ if (!recover) { if (!quiet) putc('\n', stderr); + free(trackbuf); return (EX_IOERR); } memset(trackbuf, fillbyte, secsize); @@ -284,6 +287,7 @@ continue; } } + free(trackbuf); if (!quiet) { putc('\n', stderr); if (nerrs)