diff --git a/sys/boot/common/commands.c b/sys/boot/common/commands.c index 00b93d8760a4..cc75032e72c0 100644 --- a/sys/boot/common/commands.c +++ b/sys/boot/common/commands.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: commands.c,v 1.9 1999/01/11 06:41:31 msmith Exp $ + * $Id: commands.c,v 1.10 1999/02/01 06:08:20 jkh Exp $ */ #include @@ -192,8 +192,14 @@ command_help(int argc, char *argv[]) close(hfd); if (!matched) { sprintf(command_errbuf, "no help available for '%s'", topic); + free(topic); + if (subtopic) + free(subtopic); return(CMD_ERROR); } + free(topic); + if (subtopic) + free(subtopic); return(CMD_OK); } diff --git a/sys/boot/common/interp.c b/sys/boot/common/interp.c index 1e0c3c8f2c13..bc777095a15c 100644 --- a/sys/boot/common/interp.c +++ b/sys/boot/common/interp.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: interp.c,v 1.15 1999/02/22 13:12:37 dcs Exp $ + * $Id: interp.c,v 1.16 1999/03/02 16:16:57 dcs Exp $ */ /* * Simple commandline interpreter, toplevel and misc. @@ -306,11 +306,11 @@ include(char *filename) static void prompt(void) { - char *p, *cp, *ev; + char *pr, *p, *cp, *ev; if ((cp = getenv("prompt")) == NULL) cp = ">"; - p = strdup(cp); + pr = p = strdup(cp); while (*p != 0) { if ((*p == '$') && (*(p+1) == '{')) { @@ -327,4 +327,5 @@ prompt(void) putchar(*p++); } putchar(' '); + free(pr); } diff --git a/sys/boot/common/interp_parse.c b/sys/boot/common/interp_parse.c index 865c8cbc0501..6c387106ab83 100644 --- a/sys/boot/common/interp_parse.c +++ b/sys/boot/common/interp_parse.c @@ -11,7 +11,7 @@ * Jordan K. Hubbard * 29 August 1998 * - * $Id: interp_parse.c,v 1.5 1999/01/10 05:08:12 msmith Exp $ + * $Id: interp_parse.c,v 1.6 1999/01/13 08:11:41 msmith Exp $ * * The meat of the simple parser. */ @@ -167,6 +167,7 @@ parse(int *argc, char ***argv, char *str) *argc = ac; *argv = (char **)malloc((sizeof(char *) * ac + 1)); bcopy(args, *argv, sizeof(char *) * ac + 1); + free(buf); free(copy); return 0; } diff --git a/sys/boot/common/module.c b/sys/boot/common/module.c index bacdf7a52d54..01416596ce2b 100644 --- a/sys/boot/common/module.c +++ b/sys/boot/common/module.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: module.c,v 1.7 1999/01/11 06:41:31 msmith Exp $ + * $Id: module.c,v 1.8 1999/02/22 13:12:37 dcs Exp $ */ /* @@ -245,6 +245,7 @@ mod_loadobj(char *type, char *name) if ((fd = open(name, O_RDONLY)) < 0) { sprintf(command_errbuf, "can't open '%s': %s", name, strerror(errno)); + free(name); return(CMD_ERROR); } @@ -309,6 +310,7 @@ mod_loadmodule(char *name, int argc, char *argv[]) /* Fatal error */ sprintf(command_errbuf, "can't load module '%s': %s", name, strerror(err)); + free(name); return(NULL); } else { @@ -329,6 +331,7 @@ mod_loadmodule(char *name, int argc, char *argv[]) } if (err == EFTYPE) sprintf(command_errbuf, "don't know how to load module '%s'", name); + free(name); return(mp); } @@ -437,7 +440,7 @@ mod_findmetadata(struct loaded_module *mp, int type) static char * mod_searchfile(char *name) { - static char *result = NULL; + char *result; char *path, *sp; const char *cp; struct stat sb; @@ -470,8 +473,7 @@ mod_searchfile(char *name) /* * Traverse the path, splitting off ';'-delimited components. */ - if (result != NULL) - free(result); + result = NULL; while((cp = strsep(&path, ";")) != NULL) { result = malloc(strlen(cp) + strlen(name) + 5); strcpy(result, cp);