From 5a6ed33a3f09a18b0fefc1803977e3a1c3725cdb Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Mon, 16 Feb 2009 19:29:17 +0000 Subject: Don't leak string arguments and options. --- cmd-string.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'cmd-string.c') diff --git a/cmd-string.c b/cmd-string.c index abe9222e..089f303e 100644 --- a/cmd-string.c +++ b/cmd-string.c @@ -1,4 +1,4 @@ -/* $Id: cmd-string.c,v 1.12 2009-02-08 16:38:19 nicm Exp $ */ +/* $Id: cmd-string.c,v 1.13 2009-02-16 19:29:17 nicm Exp $ */ /* * Copyright (c) 2008 Nicholas Marriott @@ -94,6 +94,7 @@ cmd_string_parse(const char *s, struct cmd_list **cmdlist, char **cause) buf = xrealloc(buf, 1, len + strlen(t) + 1); strlcpy(buf + len, t, strlen(t) + 1); len += strlen(t); + xfree(t); have_arg = 1; break; @@ -103,6 +104,7 @@ cmd_string_parse(const char *s, struct cmd_list **cmdlist, char **cause) buf = xrealloc(buf, 1, len + strlen(t) + 1); strlcpy(buf + len, t, strlen(t) + 1); len += strlen(t); + xfree(t); have_arg = 1; break; @@ -145,6 +147,10 @@ cmd_string_parse(const char *s, struct cmd_list **cmdlist, char **cause) if (*cmdlist == NULL) goto out; + do + xfree(argv[argc - 1]); + while (--argc > 0); + rval = 0; goto out; default: -- cgit