aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2009-02-16 19:29:17 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2009-02-16 19:29:17 +0000
commit5a6ed33a3f09a18b0fefc1803977e3a1c3725cdb (patch)
tree3477603619e88df1095a60691e3702fd5d5432c3
parentb03783efad9e488935bb81e57aca3b3c76bc498a (diff)
downloadrtmux-5a6ed33a3f09a18b0fefc1803977e3a1c3725cdb.tar.gz
rtmux-5a6ed33a3f09a18b0fefc1803977e3a1c3725cdb.tar.bz2
rtmux-5a6ed33a3f09a18b0fefc1803977e3a1c3725cdb.zip
Don't leak string arguments and options.
-rw-r--r--cmd-string.c8
-rw-r--r--server.c7
2 files changed, 13 insertions, 2 deletions
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 <nicm@users.sourceforge.net>
@@ -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:
diff --git a/server.c b/server.c
index e284389a..f6a23eb7 100644
--- a/server.c
+++ b/server.c
@@ -1,4 +1,4 @@
-/* $Id: server.c,v 1.122 2009-02-16 18:51:39 nicm Exp $ */
+/* $Id: server.c,v 1.123 2009-02-16 19:29:17 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -336,6 +336,11 @@ server_main(const char *srv_path, int srv_fd)
close(srv_fd);
unlink(srv_path);
+ options_free(&global_options);
+ options_free(&global_window_options);
+ if (server_password != NULL)
+ xfree(server_password);
+
return (0);
}