aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--lib/fuse.c3
2 files changed, 10 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ca86052..cc49014 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-12-02 Miklos Szeredi <miklos@szeredi.hu>
+
+ * Fix memory leak in fuse_read_cmd()/fuse_process_cmd(). Bug
+ reported by Vincenzo Ciancia
+
+ * Handle exit-by-umount in fuse_read_cmd()
+
2005-11-29 Miklos Szeredi <miklos@szeredi.hu>
* Check if '-msoft-float' option is supported by compiler when
diff --git a/lib/fuse.c b/lib/fuse.c
index 4146d41..8733164 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -1742,6 +1742,7 @@ static void free_cmd(struct fuse_cmd *cmd)
void fuse_process_cmd(struct fuse *f, struct fuse_cmd *cmd)
{
fuse_session_process(f->se, cmd->buf, cmd->buflen, cmd->ch);
+ free_cmd(cmd);
}
int fuse_exited(struct fuse *f)
@@ -1779,6 +1780,8 @@ struct fuse_cmd *fuse_read_cmd(struct fuse *f)
int res = fuse_chan_receive(ch, cmd->buf, bufsize);
if (res <= 0) {
free_cmd(cmd);
+ if (res == -1)
+ fuse_exit(f);
return NULL;
}
cmd->buflen = res;