summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm>2018-07-31 13:06:44 +0000
committernicm <nicm>2018-07-31 13:06:44 +0000
commit5f07da6227cecf3d66aa9f28579f48396373d9e4 (patch)
tree6621049403ae2dacf27812ae3df46f1664d9fa17
parent82776c456e1ad4ba2c9466e90f51179d07a4c9c2 (diff)
Do not leak path or use it after free.
-rw-r--r--cmd-load-buffer.c4
-rw-r--r--cmd-save-buffer.c3
2 files changed, 5 insertions, 2 deletions
diff --git a/cmd-load-buffer.c b/cmd-load-buffer.c
index 6920a21a..b7c299b7 100644
--- a/cmd-load-buffer.c
+++ b/cmd-load-buffer.c
@@ -85,7 +85,7 @@ cmd_load_buffer_exec(struct cmd *self, struct cmdq_item *item)
error = server_set_stdin_callback(c, cmd_load_buffer_callback,
cdata, &cause);
if (error != 0) {
- cmdq_error(item, "%s: %s", path, cause);
+ cmdq_error(item, "-: %s", cause);
free(cause);
return (CMD_RETURN_ERROR);
}
@@ -93,6 +93,8 @@ cmd_load_buffer_exec(struct cmd *self, struct cmdq_item *item)
}
file = server_client_get_path(c, path);
+ free(path);
+
f = fopen(file, "rb");
if (f == NULL) {
cmdq_error(item, "%s: %s", file, strerror(errno));
diff --git a/cmd-save-buffer.c b/cmd-save-buffer.c
index 6d5ddafd..f6ac93a6 100644
--- a/cmd-save-buffer.c
+++ b/cmd-save-buffer.c
@@ -106,6 +106,8 @@ cmd_save_buffer_exec(struct cmd *self, struct cmdq_item *item)
flags = "ab";
file = server_client_get_path(c, path);
+ free(path);
+
f = fopen(file, flags);
if (f == NULL) {
cmdq_error(item, "%s: %s", file, strerror(errno));
@@ -122,7 +124,6 @@ cmd_save_buffer_exec(struct cmd *self, struct cmdq_item *item)
fclose(f);
free(file);
- free(path);
return (CMD_RETURN_NORMAL);